Как отключиться от 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);