Как отключиться от Cast при завершении Activity?

Вот что я делаю:

  • Подключение к ChromeCast вручную через настройки.
  • Запуск моего приложения, которое управляет презентацией, чтобы показать пользовательский макет, используя устройство ChromeCast, к которому я уже подключен.
  • Завершение моего приложения, закрыв его вручную.
  • К этому времени я все еще могу видеть экран моего устройства. Здесь я хочу отключиться от кастинга программно, чтобы я больше не мог видеть кастинг экрана.

Во время презентации у меня есть доступ к дисплею, который я использую:

MediaRouter.RouteInfo route = mMediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
    return route != null ? route.getPresentationDisplay() : null;

Любые идеи о том, как добиться этой функциональности?

ОБНОВИТЬ:

Для тех, кто заинтересован в этом, вот как я это сделал (спасибо ответу Али Наддафа):

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public void disconnect(){
    MediaRouter mMediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
    mMediaRouter.selectRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO, mMediaRouter.getDefaultRoute());
}

4 ответа

Решение

Если я правильно понимаю, у вас есть пользователь запускает кастинг / зеркалирование экрана вне вашего приложения. Затем пользователь входит в ваше приложение, и когда они уходят, вы хотите отключить? Если я не прав, пожалуйста, дайте мне знать.

Можно отключить зеркалирование экрана, но я не уверен, что это правильно. Когда пользователь входит в ваше приложение, вы не знаете, включил ли он отображение экрана из-за вашего приложения или по какой-то другой причине. Если пользователь сделал это по какой-либо другой причине до входа в ваше приложение, было бы неправильно, чтобы ваше приложение отключило пользователя при выходе. Вы бы согласились?

Для тех, кто, как я, пришел за ответом с помощью v3 Cast SDK:

mSessionManager.endCurrentSession(true);

Найдите SessionManager, как показано ниже, и отключитесь от сеанса chromecast:

    mRemoteMediaClient.stop(); // stop remote media
    CastContext castContext = CastContext.getSharedInstance(this);
    SessionManager mSessionManager = castContext.getSessionManager();
    mSessionManager.endCurrentSession(true);

Это сработало для меня:

mediarouter.unselect(0)
Другие вопросы по тегам