Как полностью отключиться от устройства Cast при использовании RemoteDisplayLocalService?

Я использую Cast SDK v2 и RemoteDisplayLocalService для трансляции локального контента. В функции onRouteUnselected в MediaRouter.Callback я останавливаю службу с помощью CastRemoteDisplayLocalService.stopService(). Приложение-получатель останавливается; однако в раскрывающемся списке системы все еще говорится, что приложение подключено к приемнику, например:

Приложение все еще подключено

Я предполагаю, что это связано с тем, что GoogleApiClient CastRemoteDisplayLocalService все еще подключен к сервисам Google Play. Есть ли программный способ полностью отключить приложение-отправитель?


person plátano plomo    schedule 29.09.2016    source источник


Ответы (1)


Оказывается, эта проблема не имеет ничего общего с RemoteDisplay API. На самом деле это было вызвано тем, что я использовал MediaProjection API для трансляции экрана пользователя. Звонок

mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data); 

это то, что включает значок трансляции в раскрывающемся списке. Чтобы выключить, позвоните

mMediaProjection.stop();

Имейте в виду, что пользователь может остановить проекцию мультимедиа в любое время из раскрывающегося меню (которое не завершает сеанс удаленного отображения), поэтому добавьте следующий обратный вызов в свой MediaProjection:

mMediaProjection.registerCallback(new MediaProjection.Callback() {
    @Override
    public void onStop() {
        // Stop casting when user stops media projection
        mMediaRouter.selectRoute(mMediaRouter.getDefaultRoute());
    }
}, null);
person plátano plomo    schedule 30.09.2016