Обнаружение устройств Chromecast с помощью API Android MediaRouter
Обнаружение устройств Chromecast с использованием API-интерфейсов Android MediaRouter не работает должным образом с последней библиотекой поддержки mediarouter (версия 19) и сервисами Google Play версии 4.2.43.
Я использую пример приложения Cast Hello Text для этой проблемы. Его можно найти здесь: https://github.com/googlecast/CastHelloText-android.
Устройство Chromecast подключено к телевизору и подключено к той же сети, что и устройство Android (отправитель).
- Приложение подходит и находит устройство Chromecast. Я переопределяю некоторые из соответствующих методов MediaRouter.Callback, поэтому вижу вызываемый onRouteAdded().
- Позже я отключаю устройство от телевизора. Я ожидаю получить событие onRouteRemoved(). Но этого никогда не происходит.
- Приложение по-прежнему отображает значок приведения. При выборе устройства из значка преобразования приложение пытается подключиться к устройству и завершается неудачно. Теперь я получаю события onRouteUnSelected() и onRouteRemoved() и значок приведения исчезает.
- При подключении устройства к телевизору и отображении домашнего экрана устройства я ожидаю получить событие onRouteAdded(). Я не получаю это событие даже после ожидания в течение нескольких минут.
Это работало, как и ожидалось, в библиотеке mediarouter версии 17 и в SDK предварительного просмотра Google Cast.
Так что-то изменилось с точки зрения того, когда эти события происходят? Как правильно узнать, когда устройство Chromecast добавляется и когда оно удаляется? Я планирую использовать пользовательский интерфейс с MediaRouter API для отображения значка приведения и списка устройств.
1 ответ
В последней версии служб Android SDK/Play есть ошибка, которая вызывает поведение, которое вы видите. Это будет исправлено в следующей версии SDK и сервисов Google Play.