private void disconnect() { if (client != null) { client.release(); client=null; } router.getDefaultRoute().select(); }
private void handleDiscovery() { MediaRouteDescriptor.Builder mrdBuilder= new MediaRouteDescriptor.Builder(DEMO_ROUTE_ID, "Demo Route"); mrdBuilder.setDescription("The description of a demo route") .addControlFilter(ifPlay) .addControlFilter(ifControl) .setPlaybackStream(AudioManager.STREAM_MUSIC) .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE) .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED); MediaRouteProviderDescriptor.Builder mrpdBuilder= new MediaRouteProviderDescriptor.Builder(); mrpdBuilder.addRoute(mrdBuilder.build()); setDescriptor(mrpdBuilder.build()); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); selectedRoute=(TextView)findViewById(R.id.selected_route); router=MediaRouter.getInstance(this); selector= new MediaRouteSelector.Builder().addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO) .addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO) .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK) .build(); }
private boolean onSeekRequest(Intent i, ControlRequestCallback cb) { Log.d(getClass().getSimpleName(), "seek"); MediaItemStatus.Builder statusBuilder= new MediaItemStatus.Builder( MediaItemStatus.PLAYBACK_STATE_PLAYING); Bundle b=new Bundle(); b.putBundle(MediaControlIntent.EXTRA_ITEM_STATUS, statusBuilder.build().asBundle()); cb.onResult(b); return(true); } }
@Override public void onStop() { router.removeCallback(cb); super.onStop(); }
@Override public void onStart() { super.onStart(); router.addCallback(selector, cb, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); }
@Override public void onAttach(Activity host) { super.onAttach(host); router=MediaRouter.getInstance(host); }
@Override protected void doWork() { client.release(); client=null; if (getActivity() != null) { updateMenu(); logToTranscript(getActivity().getString(R.string.session_ended)); } } }
@Override public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo route) { selectedRoute.setText(route.toString()); } };
@Override public void onDetach() { router.removeProvider(provider); super.onDetach(); }
private void handleDiscovery() { MediaRouteDescriptor.Builder mrdBuilder= new MediaRouteDescriptor.Builder(DEMO_ROUTE_ID, "Demo Route"); mrdBuilder.setDescription("The description of a demo route") .addControlFilter(ifPlay) .addControlFilter(ifControl) .setPlaybackStream(AudioManager.STREAM_MUSIC) .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE) .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED); MediaRouteProviderDescriptor.Builder mrpdBuilder= new MediaRouteProviderDescriptor.Builder(); mrpdBuilder.addRoute(mrdBuilder.build()); setDescriptor(mrpdBuilder.build()); } }
private boolean onSeekRequest(Intent i, ControlRequestCallback cb) { Log.d(getClass().getSimpleName(), "seek"); MediaItemStatus.Builder statusBuilder= new MediaItemStatus.Builder( MediaItemStatus.PLAYBACK_STATE_PLAYING); Bundle b=new Bundle(); b.putBundle(MediaControlIntent.EXTRA_ITEM_STATUS, statusBuilder.build().asBundle()); cb.onResult(b); return(true); } }
@Override public void onStop() { router.removeCallback(cb); super.onStop(); }
@Override public void onStart() { super.onStart(); router.addCallback(selector, cb, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); }
private boolean onGetStatusRequest(Intent i, ControlRequestCallback cb) { Log.d(getClass().getSimpleName(), "get-status"); MediaItemStatus.Builder statusBuilder= new MediaItemStatus.Builder( MediaItemStatus.PLAYBACK_STATE_PLAYING); Bundle b=new Bundle(); b.putBundle(MediaControlIntent.EXTRA_ITEM_STATUS, statusBuilder.build().asBundle()); cb.onResult(b); return(true); }
@Override public void onStop() { router.removeCallback(cb); super.onStop(); }
@Override public void onStart() { super.onStart(); router.addCallback(selector, cb, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); }
private boolean onGetStatusRequest(Intent i, ControlRequestCallback cb) { Log.d(getClass().getSimpleName(), "get-status"); MediaItemStatus.Builder statusBuilder= new MediaItemStatus.Builder( MediaItemStatus.PLAYBACK_STATE_PLAYING); Bundle b=new Bundle(); b.putBundle(MediaControlIntent.EXTRA_ITEM_STATUS, statusBuilder.build().asBundle()); cb.onResult(b); return(true); }
@Override public void onDestroy() { disconnect(); router.removeCallback(routeCB); super.onDestroy(); }
private boolean onPlayRequest(Intent i, ControlRequestCallback cb) { Log.d(getClass().getSimpleName(), "play: " + i.getData().toString()); MediaItemStatus.Builder statusBuilder= new MediaItemStatus.Builder( MediaItemStatus.PLAYBACK_STATE_PLAYING); Bundle b=new Bundle(); b.putString(MediaControlIntent.EXTRA_SESSION_ID, DemoRouteProvider.DEMO_SESSION_ID); b.putString(MediaControlIntent.EXTRA_ITEM_ID, DemoRouteProvider.DEMO_ITEM_ID); b.putBundle(MediaControlIntent.EXTRA_ITEM_STATUS, statusBuilder.build().asBundle()); cb.onResult(b); return(true); }