2014-07-24 9 views
1

Я использую Android MediaRouter/Presentation API (версия support.v7).MediaRouter подключается второй раз

Все работает нормально. Единственное, что не получается:

Когда я прекратил свою деятельность (например, teardown & удалил обратные вызовы), все по-прежнему работает нормально.

Однако при запуске этой активности (предыдущая операция посредника была принудительно завершена, поэтому onPause/onDestroy был вызван FOR SURE =>, чтобы эти обратные вызовы тоже исчезли, как показано в моих отладочных сообщениях) снова на некоторых более поздний момент времени, обратные вызовы создаются и добавляются и все. Просто, что больше не включено onRouteAdded, только onProviderChanged (с поставщиком по умолчанию и, следовательно, бесполезным).

Он всегда работает так (с дисплеем wifi [miracast], эмулированным дополнительным дисплеем, хромовым вторичным дисплеем ..). Существуют ли какие-либо резолюции, которые не приведены в примерах?

Хотели бы вы найти код? Какие особые случаи? (Не могу опубликовать все это.)

Я ничего не смог найти, спасибо за вашу помощь, заранее.

ответ

0

Использование getSelectedRoute() вместо RouteInfo (которое обеспечивается обратными вызовами) выполнило эту работу для меня.

MediaRouter.RouteInfo selectedRoute = getHelper().getMediaRouter().getSelectedRoute(); 
if(provider != null && getCurrentRoute() != null && getCurrentRoute().equals(selectedRoute)){ 
    Log.d(TAG, "only provider changes, dont do anything"); 
    return false; 
} 

if (selectedRoute != null) { 
    setCurrentRoute(selectedRoute); 
} 

return updateContents(); 

это определенно странно (как остальная часть кода выглядит точно так же, как и в условии Google Android разработчика образцов), но это работает.

0

Если изменить приложение Cast образец Google для поддержки MediaRouter.Callback: https://github.com/googlecast/CastPresentation-android

Тогда я получаю onRouteAdded называется каждый раз.

+0

Вы сделали это с помощью (MediaRouter) getSystemService (Context.MEDIA_ROUTER_SERVICE); или через (метод поддержки) MediaRouter.getInstance (Context)? Может быть, разница там.? – Aeefire

0

Я знаю, что эта проблема была решена более 1 года назад, но, вероятно, это не идеальное решение. Может быть, это будет полезно для кого-то другого.

У меня была аналогичная проблема с точно такими же симптомами (больше не было вызвано onRouteAdded). В моей ситуации это было вызвано неправильной реализацией деактивации MediaRouter: чтобы деактивировать ее должным образом, вы должны не только удалить все обратные вызовы, но также выбрать MediaRoute по умолчанию.

if (!mMediaRouter.getDefaultRoute().isSelected()) { 
    mMediaRouter.getDefaultRoute().select(); 
} 
Смежные вопросы