Отображение кнопки MediaRouteButton для Chromecast на панели действий

Приложения Netflix и YouTube, поддерживающие Chromecast, отображают кнопку MediaRouteButton на панели действий, но в руководстве по приложению-отправителю показано только, как отобразить его в макете. Как отобразить его в панели действий?


person Jason Robinson    schedule 28.07.2013    source источник


Ответы (1)


Вы можете отобразить его на панели действий, добавив его в меню панели действий:

<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"/>

Затем вы обеспечиваете инициализацию в 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;
}
person Jason Robinson    schedule 28.07.2013
comment
Пожалуйста, дайте мне решение для отображения значка трансляции на панели действий с помощью библиотеки ActionBarSherlock. Спасибо - person Huy Duong Tu; 30.10.2013
comment
Если я добавлю этот код в onCreateOptionsMenu, я получу всегда отключенную кнопку. Если я ставлю его на onPrepareOptionsMenu, то кнопка работает нормально, если я не поверну экран, и в этом случае он снова станет включенным, даже если я уже выбрал устройство. Были ли такие проблемы? - person casolorz; 07.01.2014
comment
@HirenPatel Этому ответу 2 года, и он может быть устаревшим. Я бы рекомендовал начать новый вопрос. - person Jason Robinson; 18.06.2015