Cast to android device

How to Cast Windows 10 to Android TV or Any Smart TV

While Chromecast works remarkably well within the Android – Chrome ecosystem, the moment you step out of Google’s hallowed garden, you realize there is little choice for Windows users. You can’t cast local media stored on your Windows 10 computer to Android TV. Neither you can cast any program other than Chrome. So if you are looking for a solution to cast Windows 10 in its entirety to Android TV then you have come to the right place. Here, we show you how to set up screen mirroring from Windows 10 to Android TV or for that matter, any other smart TV using Miracast. So without any delay, let’s go through the guide.

Cast Windows 10 to Android TV or Any Smart TV

Here, we have mentioned all the methods so that you can follow the instructions step-by-step. Before you proceed, go through the requirements and check if your device has support for Miracast. You can click on the link below to seamlessly jump to the section.

  1. Requirements
  2. Find Miracast Support on Windows 10
  3. Find Miracast Support on Android TV
  4. Cast Windows 10 to Android TV

Project Windows 10 Screen to Android TV

Requirements

  1. Miracast-compliant TV
  2. Miracast-compliant Windows PC or Laptop
  3. Both your Android TV and Windows 10 computer should be connected to a common WiFi network.

Find Miracast Support on Windows 10

1. Press Win + R to open the Run window. Here, enter dxdiag and hit enter.

2. Now, click on “Save All Information” and save the file on the desktop. It will be saved in a text file.

3. Open the text file and look for “Miracast“. If it shows “Available” then you are good to go.

4. In case, it shows “Not supported by Graphics driver” then download Intel Driver Assistant (Free) and update all drivers. It might be the case that your computer has the right hardware, but due to the lack of a proper driver, Miracast might not be available on your device. So go ahead and give it a try through the Intel Driver Assistant. Keep in mind, for Miracast to work, both hardware and software support is needed.

5. You can also try updating the Microsoft Wireless Display Adapter (Free) from the Microsoft Store.

Find Miracast Support on Android TV

Before we begin, let me tell you I am using Mi TV 4X running the latest Android 9. Xiaomi recently added support for Miracast on Mi TV so I am able to use the Miracast feature now. Xiaomi has added a separate Miracast app to connect with wireless displays.

For Android TVs manufactured by other vendors such as Sony, Samsung, LG et al, you may have to dig into settings and find the “Miracast” menu. This is applicable for not just Android TV but all smart TVs. Make sure Miracast is enabled and discoverable. I would also recommend you to go through Settings -> Apps -> See All Apps.

Читайте также:  Передача файлов андроид windows

If need be, go through all the System Apps (located at the bottom) and find the Miracast menu. You can also go through all the Settings menu and find the Miracast option. As for this guide, I am going to show how you can find Miracast support on Mi TVs.

1. On the Android TV interface, move to the “+” button which is available along the “Apps” section.

2. Here, you will find the “Miracast” app. Simply select it and the app will be added to your favorite apps section. If Miracast is not available here then search it under Settings -> Apps -> See All Apps.

3. Now open the Miracast app and the wireless display feature will be enabled. You should stick to this screen while casting Windows 10 to Android TV.

Cast Windows 10 to Android TV

1. Open the Miracast app on your Android TV and stay on that screen. For your information, Definition Priority means the highest clarity possible, but real-time syncing will take a back seat. Fluency Priority means a stable connection with real-time syncing but in low-res quality (better for low-end devices). I like to keep Definition Priority as default.

2. Now, move back to your Windows 10 computer and press the “Win + K” keyboard shortcut. It will open a “Connect” window on the right pane.

3. If the “Connect” window does not pop up then open Settings -> System -> Display. Here, scroll down and click on “Connect to a wireless display”.

4. Now, it will start the search and within a few seconds, your Android TV will show up. Make sure the Miracast app is open on your Android TV and both your devices are connected to the common WiFi network. Next, click on your Android TV.

5. Finally, Windows 10 will cast its screen on your Android TV. Just like Chromecast, you can play music and it will be routed through your TV’s speaker. You can browse the internet, open any app (not just limited to Chrome), play games, and a lot more.

6. In case, you want to extend your display or make the setup second screen only then press “Win +P ” and change the projection mode.

Screen Mirroring from Windows 10 to Android TV Using Miracast

So that is how you can cast Windows 10 to Android TV and play any media or games. If you have a powerful computer, router, and Android TV then you can very well make your Android TV as a second screen. Anyway, that is all from us. If you want to learn more such Mi TV tips and tricks then go through our linked guide. And if you are facing any issue then comment down below and let us know. We will surely try to help you out.

Источник

Смотрю и слушаю где хочу. Интегрируем Chromecast в Android-приложение

На улице я часто слушаю аудиокниги и подкасты со смартфона. Когда прихожу домой, мне хочется продолжить слушать их на Android TV или Google Home. Но далеко не все приложения поддерживают Chromecast. А было бы удобно.

Читайте также:  Крутая блокировка экрана для андроид

По статистике Google за последние 3 года, количество девайсов на Android TV увеличилось в 4 раза, а число партнеров-производителей уже превысило сотню: «умные» телевизоры, колонки, TV-приставки. Все они поддерживают Chromecast. Но в маркете ещё много приложений, которым явно не хватает интеграции с ним.

В этой статье я хочу поделиться своим опытом интеграции Chromecast в Android-приложение для воспроизведения медиа-контента.

Как это работает

Если вы впервые слышите слово «Chromecast», то постараюсь вкратце рассказать. С точки зрения пользования, это выглядит примерно так:

  1. Пользователь слушает музыку или смотрит видео через приложение или веб-сайт.
  2. В локальной сети появляется Chromecast-девайс.
  3. В интерфейсе плеера должна появиться соответствующая кнопка.
  4. Нажав её, пользователь выбирает нужный девайс из списка. Это может быть Nexus Player, Android TV или «умная» колонка.
  5. Дальше воспроизведение продолжается именно с этого девайса.

Технически происходит примерно следующее:

  1. Google Services отслеживают наличие Chromecast девайсов в локальной сети посредством бродкастинга.
  2. Если к вашему приложению подключен MediaRouter, то вам придёт событие об этом.
  3. Когда пользователь выбирает Cast-девайс, и подключается к нему, открывается новая медиа-сессия (CastSession).
  4. Уже в созданную сессию мы будем передавать контент для воспроизведения.
    Звучит очень просто.

Интеграция

У Google есть свой SDK для работы с Chromecast, но он плохо покрыт документацией, а его код обфусцирован. Поэтому многие вещи пришлось проверять методом тыка. Давайте обо всём по порядку.

Инициализация

Для начала нам надо подключить Cast Application Framework и MediaRouter:

Затем Cast Framework должен получить идентификатор приложения (об этом позже), и типы поддерживаемого медиаконтента. То есть если у нас приложение воспроизводит только видео, то кастинг на колонку Google Home будет невозможен, и в списке девайсов её не будет. Для этого нужно создать реализацию OptionsProvider:

И объявить его в Manifest:

Регистрируем приложение

Чтобы Chromecast мог работать с нашим приложением, его необходимо зарегистрировать в Google Cast SDK Developers Console. Для этого потребуется аккаунт Chromecast разработчика (не путать с аккаунтом разработчика Google Play). При регистрации придётся внести разовый взнос в 5$. После публикации ChromeCast Application нужно немного подождать.
В консоли можно изменить внешний вид Cast-плеера для девайсов с экраном и посмотреть аналитику кастинга в рамках приложения.

MediaRouter

MediaRouteFramework – это механизм, который позволяет находить все удалённые устройства воспроизведения вблизи пользователя. Это может быть не только Chromecast, но и удалённые дисплеи и колонки с использованием сторонних протоколов. Но нас интересует именно Chromecast.

В MediaRouteFramework есть View, которая отражает состояние медиароутера. Есть два способа её подключить:

А из кода требуется всего лишь зарегистрировать кнопку в CastButtonFactory. тогда в нее будет прокидываться текущее состояние медиароутера:

Теперь, когда приложение зарегистрировано, и MediaRouter настроен, можно подключаться к ChromeCast-девайсам и открывать сессии к ним.

Кастинг медиаконтента

ChromeCast поддерживает три основных вида контента:

В зависимости от настроек плеера, типа медиаконтента и cast-девайса, интерфейс плеера может отличаться.

CastSession

Итак, пользователь выбрал нужный девайс, CastFramework открыл новую сессию. Теперь наша задача заключается в том, чтобы отреагировать на это и передать девайсу информацию для воспроизведения.
Чтобы узнать текущее состояние сессии и подписаться на обновление этого состояния, воспользуемся объектом SessionManager:

А ещё можем узнать, нет ли открытой сессии в данный момент:

У нас есть два основных условия, при которых мы можем начинать кастинг:

  1. Сессия уже открыта.
  2. Есть контент для кастинга.

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

Кастинг

Теперь, когда у нас есть что кастить и куда кастить, можем перейти к самому главному. Помимо всего прочего, у CastSession есть объект RemoteMediaClient, который отвечает за состояние воспроизведения медиаконтента. С ним и будем работать.

Читайте также:  Как сделать синхронизацию контактов андроид с гугл

Создадим MediaMetadata, где будет храниться информация об авторе, альбоме и т. д. Очень похоже на то, что мы передаём в MediaSession, когда начинаем локальное воспроизведение.

Параметров у MediaMetadata много, и их лучше посмотреть в документации. Приятно удивило, что можно добавить изображение не через bitmap, а просто ссылкой внутри WebImage.

Объект MediaInfo несёт информацию о метаданных контента и будет говорить о том, откуда медиаконтент брать, какого он типа, как его проигрывать:

Напомню, что contentType – это тип контента по спецификации MIME.
Также в MediaInfo можно передать рекламные вставки:

  • setAdBreakClips – принимает список рекламных роликов AdBreakClipInfo с указанием ссылок на контент, заголовка, тайминга и временем, через которое реклама становится пропускаемой.
  • setAdBreaks – информация о разметке и тайминге рекламных вставок.

В MediaLoadOptions мы описываем то, как будем обрабатывать медиапоток (скорость, начальная позиция). Также документация говорит, что через setCredentials можно передать заголовок запроса для авторизации, но у меня запросы от Chromecast не включали в себя заявленные поля для авторизации.

После того как всё готово, мы можем отдать все данные в RemoteMediaClient, и Chromecast начнёт воспроизведение. Важно поставить локальное воспроизведение на паузу.

Обработка событий

Видео заиграло, а что дальше? Что если пользователь нажмёт паузу на телевизоре? Чтобы узнавать о событиях, происходящих со стороны Chromecast, у RemoteMediaClient есть обратные вызовы:

Узнать текущий прогресс тоже просто:

Опыт интеграции с существующим плеером

В приложении, над которым я работал, уже был готовый медиаплеер. Стояла задача интегрировать в него поддержку Chromecast. В основе медиаплеера лежал State Machine, и первой мыслью было добавить новое состояние: «CastingState». Но эта идея сразу была отвергнута, потому что каждое состояние плеера отражает состояние воспроизведения, и не важно, что служит реализацией ExoPlayer или ChromeCast.
Тогда пришла идея сделать некую систему делегатов с расстановкой приоритетов и обработкой «жизненного цикла» плеера. Все делегаты могут получать события о состоянии плеера: Play, Pause и т.д. — но только ведущий делегат будет воспроизводить медиаконтент.

У нас есть примерно такой интерфейс плеера:

Внутри у него будет лежать State Machine с таким множеством состояний:

  • Empty — начальное состояние до инициализации.
  • Preparing — плеер инициализирует воспроизведение медиаконтента.
  • Prepared — медиаданные загружены и готовы к воспроизведению.
  • Playing
  • Paused
  • WaitingForNetwork
  • Error

Раньше каждое состояние при инициализации отдавало команду в ExoPlayer. Теперь оно будет отдавать команду в список Playing-делегатов, и «Ведущий» делегат сможет его обработать. Поскольку делегат реализует все функции плеера, то его тоже можно наследовать от интерфейса плеера и при необходимости использовать отдельно. Тогда абстрактный делегат будет выглядеть так:

Для примера я упростил интерфейсы. В реальности событий немного больше.
Делегатов может быть сколько угодно, как и источников воспроизведения. А делегат для Chromecast может выглядеть примерно так:

Прежде чем отдать команду о воспроизведении, нам надо определиться с ведущим делегатом. Для этого они добавляются в порядке приоритета в плеер, и каждый из них может отдавать состояние своей готовности в методе readyForLeading(). Полный код примера можно увидеть на GitHub.

Есть ли жизнь после ChromeCast

После того как я интегрировал поддержку Chromecast в приложение, мне стало приятнее приходить домой и наслаждаться аудиокнигами не только через наушники, но и через Google Home. Что касается архитектуры, то реализация плееров в разных приложениях может различаться, поэтому не везде такой подход будет уместен. Но для нашей архитектуры это подошло. Надеюсь, эта статья была полезной, и в ближайшем будущем появится больше приложений, умеющих интегрироваться с цифровым окружением!

Источник

Оцените статью