Programmatically mirror screen from android device to TV -
my samsung device running kitkat(19) has "screen mirroring" option finds , syncs nearby compatible displays. implement feature programatically.
i have experimented both mediaroute , displaymanager classes. both succeed in detecting nearby displays, after manually turn on screen mirroring. them detect displays automatically. there i'm missing initiate scan or kick wifidisplaycontroller gear?
here implementation of mediarouter:
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); handler = new handler(); output = (textview) findviewbyid(r.id.output); mmediarouter = mediarouter.getinstance(this); mselector = new mediarouteselector.builder() .addcontrolcategory(mediacontrolintent.category_live_video) .addcontrolcategory(mediacontrolintent.category_remote_playback) .build(); } @override public void onresume() { super.onresume(); mmediarouter.addcallback(mselector, mmrcallback, mediarouter.callback_flag_perform_active_scan); } @override public void onpause() { super.onpause(); mmediarouter.removecallback(mmrcallback); } protected void ondestroy() { super.ondestroy(); } private mediarouter.callback mmrcallback = new mediarouter.callback() { @override public void onrouteadded(mediarouter router, mediarouter.routeinfo route) { super.onrouteadded(router, route); string outputtext = router.getroutes().size() + " routes detected\n"; list routes = router.getroutes(); (int i=0;i<routes.size(); i++) { outputtext = outputtext + routes.get(i) + "\n"; } output.settext(outputtext); } @override public void onrouteremoved(mediarouter router, mediarouter.routeinfo route) { super.onrouteremoved(router, route); output.settext("route removed: " + route + "\n" + router.getroutes().size() + " routes detected."); } @override public void onprovideradded(mediarouter router, mediarouter.providerinfo provider) { super.onprovideradded(router, provider); string outputtext = router.getproviders().size() + " providers detected\n"; list providers = router.getproviders(); (int i=0;i<providers.size(); i++) { outputtext = outputtext + providers.get(i) + "\n"; } output.settext(outputtext); } @override public void onproviderremoved(mediarouter router, mediarouter.providerinfo provider) { super.onproviderremoved(router, provider); output.settext("provider removed: " + provider + "\n" + router.getproviders().size() + " providers detected."); } @override public void onproviderchanged(mediarouter router, mediarouter.providerinfo provider) { super.onproviderchanged(router, provider); } };
and here implementation of displaymanager:
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); handler = new handler(); displaymanager = (displaymanager)
getsystemservice(display_service); }
@override public void onresume() { super.onresume(); displaymanager.registerdisplaylistener(displaylistener,handler); displaymanager.getdisplays(); } @override public void onpause() { super.onpause(); displaymanager.unregisterdisplaylistener(displaylistener); } private displaymanager.displaylistener displaylistener = new displaymanager.displaylistener() { @override public void ondisplayadded(int displayid) { output.settext("display added: " + displayid); } @override public void ondisplayremoved(int displayid) { output.settext("display removed: " + displayid); } @override public void ondisplaychanged(int displayid) { } };
i hope you, done screen mirroring cast settings, uses device's cast service.
public void enablingwifidisplay() { try { startactivity(new intent("android.settings.wifi_display_settings")); return; } catch (activitynotfoundexception activitynotfoundexception) { activitynotfoundexception.printstacktrace(); } try { startactivity(new intent("android.settings.cast_settings")); return; } catch (exception exception1) { toast.maketext(getapplicationcontext(), "device not supported", toast.length_long).show(); } }
Comments
Post a Comment