Можно ли программно подключиться к маршруту Chromecast?

Я пишу приложение для приемника Chromecast, которое (надеюсь) позволит мне удаленно размещать на телевизоре предупреждающие сообщения в качестве напоминаний.

Мой план состоял в том, чтобы в моей домашней сети было выделенное беспроводное устройство, которое бы постоянно запрашивало новые сообщения с централизованного сервера. Когда новое сообщение было найдено, оно подключалось к маршруту Chromecast, включало телевизор и отображало новое сообщение.

Но, насколько я могу судить, единственный способ активировать маршрут Chromecast - вручную щелкнуть значок Chromecast в моем браузере Chrome или беспроводном устройстве.

Есть ли способ программно активировать Chromecast? Можно ли это сделать в отправителе?

1 ответ

Решение

Вы можете программно сканировать литые устройства и подключаться к ним при необходимости. Шаги:

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

При этом помните, что если вы хотите показывать уведомление пользователям по телевизору, ваше приложение должно быть запущено на Chromecast в то время, когда вы хотите отправить уведомление.

Другие вопросы по тегам