Можно ли программно подключиться к маршруту Chromecast?
Я пишу приложение для приемника Chromecast, которое (надеюсь) позволит мне удаленно размещать на телевизоре предупреждающие сообщения в качестве напоминаний.
Мой план состоял в том, чтобы в моей домашней сети было выделенное беспроводное устройство, которое бы постоянно запрашивало новые сообщения с централизованного сервера. Когда новое сообщение было найдено, оно подключалось к маршруту Chromecast, включало телевизор и отображало новое сообщение.
Но, насколько я могу судить, единственный способ активировать маршрут Chromecast - вручную щелкнуть значок Chromecast в моем браузере Chrome или беспроводном устройстве.
Есть ли способ программно активировать Chromecast? Можно ли это сделать в отправителе?
1 ответ
Вы можете программно сканировать литые устройства и подключаться к ним при необходимости. Шаги:
- Получить экземпляр синглтона MediaRouter из системы:
mMediaRouter
- Построить селектор:
mMediaRouteSelector = new MediaRouteSelector.Builder() .addControlCategory( CastMediaControlIntent .categoryForCast(YOUR_APP_ID)).build();
- Добавьте обратный вызов, чтобы начать сканирование:
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
onRouteAdded()
а такжеonRouteRemoved()
вашего обратного вызова (т.е.mMediaRouterCallback
) будет вызываться при обнаружении или удалении маршрутов. Вы можете поддерживать список маршрутов в своем приложении и обновлять их с помощью этих двух обратных вызовов.- Вы можете выбрать маршрут по телефону
mMediaRouter.selectRoute(aRouteInfo)
, ТогдаonRouteSelected()
из вашего обратного вызова будет вызван, и вы можете извлечь устройство, как обычно, и делать, как вам угодно.
При этом помните, что если вы хотите показывать уведомление пользователям по телевизору, ваше приложение должно быть запущено на Chromecast в то время, когда вы хотите отправить уведомление.