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