7

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?

Jason Robinson
  • 31,005
  • 19
  • 77
  • 131

1 Answers1

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