The Netflix and YouTube apps supporting Chromecast show the MediaRouteButton in the action bar, but the Sender App Tutorial only shows how to display it in a layout. How do you display it in the action bar?
Asked
Active
Viewed 5,654 times
1 Answers
17
You can display it in the action bar by adding it to your action bar menu:
<item
android:id="@+id/action_mediaroute"
android:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
android:actionViewClass="android.support.v7.app.MediaRouteButton"
android:showAsAction="always"
android:title="@string/action_chromecast"/>
Then you provide initialization in onCreateOptionsMenu
:
public boolean onCreateOptionsMenu( Menu menu ) {
getMenuInflater().inflate( R.menu.main, menu );
MenuItem mediaRouteItem = menu.findItem( R.id.action_mediaroute );
mMediaRouteButton = (MediaRouteButton) mediaRouteItem.getActionView();
mCastContext = new CastContext( getApplicationContext() );
MediaRouteHelper.registerMinimalMediaRouteProvider( mCastContext, this );
mMediaRouter = MediaRouter.getInstance( getApplicationContext() );
mMediaRouteSelector = MediaRouteHelper.buildMediaRouteSelector( MediaRouteHelper.CATEGORY_CAST );
mMediaRouteButton.setRouteSelector( mMediaRouteSelector );
mMediaRouterCallback = new MyMediaRouterCallback();
return true;
}

Jason Robinson
- 31,005
- 19
- 77
- 131
-
Please give me a solution to display cast icon in actionbar using ActionBarSherlock lib. Thanks – Huy Duong Tu Oct 30 '13 at 09:54
-
If I add that code on `onCreateOptionsMenu` then I get an always disabled button. If I put it on `onPrepareOptionsMenu` then the button works fine, unless I rotate the screen in which case it goes back to enabled even if I had already selected a device. Had any issues like that? – casolorz Jan 06 '14 at 22:19
-
@HirenPatel This answer is 2 years old and may be out-of-date. I'd recommend starting a new question. – Jason Robinson Jun 18 '15 at 20:20