Android TV chromecast не работает chromecast

На улице я часто слушаю аудиокниги и подкасты со смартфона. Когда прихожу домой, мне хочется продолжить слушать их на 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. Дальше воспроизведение продолжается именно с этого девайса.

6 Ways to Fix Chromecast built in not Working Issue in Android TV | Screen Cast and Screen Mirroring

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

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

Интеграция

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

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

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

implementation «com.google.android.gms:play-services-cast-framework:16.1.0» implementation «androidx.mediarouter:mediarouter:1.0.0»

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

class CastOptionsProvider: OptionsProvider < override fun getCastOptions(context: Context): CastOptions < return CastOptions.Builder() .setReceiverApplicationId(BuildConfig.CHROMECAST_APP_ID) .build() >override fun getAdditionalSessionProviders(context: Context): MutableList? < return null >>

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

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

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

MediaRouter

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

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

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

CastButtonFactory.setUpMediaRouteButton(applicationContext, view.mediaRouteButton)

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

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

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

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

CastSession

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

private val mediaSessionListener = object : SessionManagerListener < override fun onSessionStarted(session: CastSession, sessionId: String) < currentSession = session // Тут проверим, что мы готовы начать кастинг checkAndStartCasting() >override fun onSessionEnding(session: CastSession) < stopCasting() >override fun onSessionResumed(session: CastSession, wasSuspended: Boolean) < currentSession = session checkAndStartCasting() >override fun onSessionStartFailed(session: CastSession, p1: Int) < stopCasting() >override fun onSessionEnded(session: CastSession, p1: Int) < // do nothing >override fun onSessionResumeFailed(session: CastSession, p1: Int) < // do nothing >override fun onSessionSuspended(session: CastSession, p1: Int) < // do nothing >override fun onSessionStarting(session: CastSession) < // do nothing >override fun onSessionResuming(session: CastSession, sessionId: String) < // do nothing >> val sessionManager = CastContext.getSharedInstance(context).sessionManager sessionManager.addSessionManagerListener(mediaSessionListener, CastSession::class.java)

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

val currentSession: CastSession? = sessionManager.currentCastSession

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

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

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

Кастинг

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

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

val mediaMetadata = MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK ).apply < putString(MediaMetadata.KEY_TITLE, “In C”) putString(MediaMetadata.KEY_ARTIST, “Terry Riley”) mediaContent?.metadata?.posterUrl?.let < poster ->addImage(WebImage(Uri.parse(“https://habrastorage.org/webt/wk/oi/pf/wkoipfkdyy2ctoa5evnd8vhxtem.png”))) > >

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

Еще по теме:  Ororo TV приложение ororo TV есть

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

val mediaInfo = MediaInfo.Builder(“https://you-address.com/in_c.mp3”) .setContentType(“audio/mp3”) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setMetadata(mediaMetadata) .build()

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

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

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

val mediaLoadOptions = MediaLoadOptions.Builder() .setPlayPosition(position!!) .setAutoplay(true) .setPlaybackRate(playbackSpeed) .setCredentials(context.getString(R.string.bearer_token, authGateway.authState.accessToken!!)) .setCredentialsType(context.getString(R.string.authorization_header_key)) .build()

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

val remoteMediaClient = currentSession. remoteMediaClient remoteMediaClient.load(mediaInfo, mediaLoadOptions)

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

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

private val castStatusCallback = object : RemoteMediaClient.Callback() < override fun onStatusUpdated() < // check and update current state >> remoteMediaClient.registerCallback(castStatusCallback)

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

val periodMills = 1000L remoteMediaClient.addProgressListener( RemoteMediaClient.ProgressListener < progressMills, durationMills ->// show progress in your UI >, periodMills )

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

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

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

interface Player < val isPlaying: Boolean val isReleased: Boolean val duration: Long var positionInMillis: Long var speed: Float var volume: Float var loop: Boolean fun addListener(listener: PlayerCallback) fun removeListener(listener: PlayerCallback): Boolean fun getListeners(): MutableSetfun prepare(mediaContent: MediaContent) fun play() fun pause() fun release() interface PlayerCallback < fun onPlaying(currentPosition: Long) fun onPaused(currentPosition: Long) fun onPreparing() fun onPrepared() fun onLoadingChanged(isLoading: Boolean) fun onDurationChanged(duration: Long) fun onSetSpeed(speed: Float) fun onSeekTo(fromTimeInMillis: Long, toTimeInMillis: Long) fun onWaitingForNetwork() fun onError(error: String?) fun onReleased() fun onPlayerProgress(currentPosition: Long) >>

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

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

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

abstract class PlayingDelegate( protected val playerCallback: Player.PlayerCallback, var isLeading: Boolean = false ) : Player < fun setIsLeading(isLeading: Boolean, positionMills: Long, isPlaying: Boolean) < this.isLeading = isLeading if (isLeading) < onLeading(positionMills, isPlaying) >else < onDormant() >> final override fun addListener(listener: Player.PlayerCallback) < // do nothing >final override fun removeListener(listener: Player.PlayerCallback): Boolean < return false >final override fun getListeners(): MutableSet < return mutableSetOf() >/** * Если сеть вернулась */ open fun netwarkIsRestored() < // do nothing >/** * Делегат переведен в ведущее состояние */ abstract fun onLeading(positionMills: Long, isPlaying: Boolean) /** * Делегат переведен в состояние бездействия */ abstract fun onIdle() /** * Вызывается на этапе инициализации плеера. * Если делегат готов к ведению воспроизведения, * то плеер может передать эту ответственность ему. */ abstract fun readyForLeading(): Boolean >

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

ChromeCastDelegate.kt

class ChromeCastDelegate( private val context: Context, private val castCallback: ChromeCastListener, playerCallback: Player.PlayerCallback ) : PlayingDelegate(playerCallback) < companion object < private const val CONTENT_TYPE_VIDEO = «videos/mp4» private const val CONTENT_TYPE_AUDIO = «audio/mp3» private const val PROGRESS_DELAY_MILLS = 500L >interface ChromeCastListener < fun onCastStarted() fun onCastStopped() >private var sessionManager: SessionManager? = null private var currentSession: CastSession? = null private var mediaContent: MediaContent? = null private var currentPosition: Long = 0 private val mediaSessionListener = object : SessionManagerListener < override fun onSessionStarted(session: CastSession, sessionId: String) < currentSession = session castCallback.onCastStarted() >override fun onSessionEnding(session: CastSession) < currentPosition = session.remoteMediaClient?.approximateStreamPosition ?: currentPosition stopCasting() >override fun onSessionResumed(session: CastSession, wasSuspended: Boolean) < currentSession = session castCallback.onCastStarted() >override fun onSessionStartFailed(session: CastSession, p1: Int) < stopCasting() >override fun onSessionEnded(session: CastSession, p1: Int) < // do nothing >override fun onSessionResumeFailed(session: CastSession, p1: Int) < // do nothing >override fun onSessionSuspended(session: CastSession, p1: Int) < // do nothing >override fun onSessionStarting(session: CastSession) < // do nothing >override fun onSessionResuming(session: CastSession, sessionId: String) < // do nothing >> private val castStatusCallback = object : RemoteMediaClient.Callback() < override fun onStatusUpdated() < if (currentSession == null) return val playerState = currentSession. remoteMediaClient.playerState when (playerState) < MediaStatus.PLAYER_STATE_PLAYING ->playerCallback.onPlaying(positionInMillis) MediaStatus.PLAYER_STATE_PAUSED -> playerCallback.onPaused(positionInMillis) > > > private val progressListener = RemoteMediaClient.ProgressListener < progressMs, durationMs ->playerCallback.onPlayerProgress(progressMs) > // Playing delegate override val isReleased: Boolean = false override var loop: Boolean = false override val isPlaying: Boolean get() = currentSession?.remoteMediaClient?.isPlaying ?: false override val duration: Long get() = currentSession?.remoteMediaClient?.streamDuration ?: 0 override var positionInMillis: Long get() < currentPosition = currentSession?.remoteMediaClient?.approximateStreamPosition ?: currentPosition return currentPosition >set(value) < currentPosition = value checkAndStartCasting() >override var speed: Float = SpeedProvider.default() set(value) < field = value checkAndStartCasting() >override var volume: Float get() = currentSession?.volume?.toFloat() ?: 0F set(value) < currentSession?.volume = value.toDouble() >override fun prepare(mediaContent: MediaContent) < sessionManager = CastContext.getSharedInstance(context).sessionManager sessionManager?.addSessionManagerListener(mediaSessionListener, CastSession::class.java) currentSession = sessionManager?.currentCastSession this.mediaContent = mediaContent playerCallback.onPrepared() >override fun play() < if (isLeading) < currentSession?.remoteMediaClient?.play() >> override fun pause() < if (isLeading) < currentSession?.remoteMediaClient?.pause() >> override fun release() < stopCasting(true) >override fun onLeading(positionMills: Long, isPlaying: Boolean) < currentPosition = positionMills checkAndStartCasting() >override fun onIdle() < // TODO >override fun readyForLeading(): Boolean < return currentSession != null >// internal private fun checkAndStartCasting() < if (currentSession != null mediaContent?.metadata != null isLeading) < val mediaMetadata = MediaMetadata(getMetadataType(mediaContent. type)).apply < putString(MediaMetadata.KEY_TITLE, mediaContent?.metadata?.title.orEmpty()) putString(MediaMetadata.KEY_ARTIST, mediaContent?.metadata?.author.orEmpty()) mediaContent?.metadata?.posterUrl?.let < poster ->addImage(WebImage(Uri.parse(poster))) > > val mediaInfo = MediaInfo.Builder(mediaContent. contentUri.toString()) .setContentType(getContentType(mediaContent. type)) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setMetadata(mediaMetadata) .build() val mediaLoadOptions = MediaLoadOptions.Builder() .setPlayPosition(currentPosition) .setAutoplay(true) .setPlaybackRate(speed.toDouble()) .build() val remoteMediaClient = currentSession. remoteMediaClient remoteMediaClient.unregisterCallback(castStatusCallback) remoteMediaClient.load(mediaInfo, mediaLoadOptions) remoteMediaClient.registerCallback(castStatusCallback) remoteMediaClient.addProgressListener(progressListener, PROGRESS_DELAY_MILLS) > > private fun stopCasting(removeListener: Boolean = false) < if (removeListener) < sessionManager?.removeSessionManagerListener(mediaSessionListener, CastSession::class.java) >currentSession?.remoteMediaClient?.unregisterCallback(castStatusCallback) currentSession?.remoteMediaClient?.removeProgressListener(progressListener) currentSession?.remoteMediaClient?.stop() currentSession = null if (isLeading) < castCallback.onCastStopped() >> private fun getContentType(mediaType: MediaContent.Type) = when (mediaType) < MediaContent.Type.AUDIO ->CONTENT_TYPE_AUDIO MediaContent.Type.VIDEO -> CONTENT_TYPE_VIDEO > private fun getMetadataType(mediaType: MediaContent.Type) = when (mediaType) < MediaContent.Type.AUDIO ->MediaMetadata.MEDIA_TYPE_MUSIC_TRACK MediaContent.Type.VIDEO -> MediaMetadata.MEDIA_TYPE_MOVIE > >

Еще по теме:  Формат ТВ передачи это

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

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

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

Источник: habr.com

Как пользоваться функцией Chromecast на телевизоре — пошаговая настройка

Chromecast (Google Cast) позволяет полноценно просматривать на большом экране видео из интернета или любой другой контент пользователя. Чтобы пользоваться им, нужно знать, как правильно настроить трансляцию. Это устройство обеспечивает высокое качество видео и звука и позволит получить удовольствие от просмотра контента.

Как пользоваться функцией Chromecast на телевизоре - пошаговая настройка

Что такое Хромкаст

Это устройство присоединяют к HDMI разъёма телевизора. Chromecast получает контент через WiFi от домашних устройств: компьютера, телефона или планшета. Это устройство сделано простым и надёжным. Его применение не создаёт сложностей для пользователя.

Чтобы использовать Chromecast необходимо установить специальное приложение. Приставка впервые появилась в 2013 году. Следующие версии были созданы в 2015 и 2018 годах. В первой версии устройство могло работать в частотном диапазоне 2,4 ГГц, но 5,0 ГГц был ему недоступен. Во второй версии, вышедшей в 2015 году этот недостаток был исправлен.

Теперь Chromecast может работать в обоих частотных диапазонах.

Chromecast второго поколения

Chromecast 2 позволяет просматривать видео потоки из различных сервисов, а также воспроизводить видео, аудио файлы и изображения пользователя. Хром каст 2 может непосредственно отображать содержимое страниц, открытых в браузере Google Chrome. В устройстве имеется разъём мини-USB, предназначенный для подключения питания.

В комплект поставки входит шнур, имеющий мини-USB и USB разъёмы. Первый вставляется в устройство. Второй — в USB разъём телевизора или в адаптер питания, подключённый к розетке.

Как пользоваться функцией Chromecast на телевизоре - пошаговая настройка

Непосредственно на устройстве есть кнопка Reset. Её можно нажать в случае, если настройка будет выполнена с ошибками. В результате этого параметры будут сброшены к начальным значениям. Нажатие должно быть длительным — его нужно производить на протяжении нескольких секунд.

Как пользоваться функцией Chromecast на телевизоре - пошаговая настройка

Трансляция видео контента производится в фоновом режиме. Если она запущена, пользователь может одновременно использовать гаджет для других целей. Работа с сервисами происходит аналогичным образом. Для примера далее будет рассмотрено то, как просматривать ролик с Youtube.

Работа с Youtube

Выбор ролика делается со смартфона. Для этого заходят на сайт и выбирают интересующий пользователя ролик. Его нужно запустить.

В верхней части есть иконка, изображающая прямоугольник и концентрические дуги. После нажатия на неё будет задан вопрос о том, где пользователь хочет просматривать трансляцию.

Нужно выбрать Chromecast, после этого трансляция ролика произойдёт на телевизоре. В процессе трансляции со смартфона можно управлять просмотром ролика: его можно, например, остановить, отключить или промотать.

Как транслировать содержимое браузера Chrome

Есть возможность отображать содержимое вкладок Google Chrome. Для этого на браузер необходимо установить расширение Chromecast.

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

Чтобы страницу можно было увидеть на экране телевизора, нужно на неё нажать. Появится форма, на которой кликают по кнопке «Start casting».

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

Как пользоваться функцией Chromecast на телевизоре - пошаговая настройка

Пользователи отмечают, что при передаче содержимого страницы имеется задержка, составляющая 1-1.5 секунд. Однако анимация при этом происходит плавно.

Трансляция контента пользователя

При помощи определённых приложений можно транслировать контент на Chromecast. В операционной системе Андроид такой функцией, например, обладает ES File Explorer. В iOS это может сделать InFuse. Чтобы выполнить трансляцию достаточно воспользоваться опцией «Отправить», а затем выбрать Chromecast. Таким образом можно просматривать видео, слушать аудио контент или просматривать картинки.

Как пользоваться chromecast built in на телевизоре — подробный обзор:

Chromecast и Chromecast Ультра

Третья модель, вышедшая в 2018 году оснащена новым процессором. Она получила название Chromecast Ultra. Первые две модели могли работать только с использованием беспроводного соединения. В последней версии также имеется разъём мини-USB, предназначенный для подключения блока питания. В нём есть порт для подключения проводного интернета.

Как пользоваться функцией Chromecast на телевизоре - пошаговая настройка

Miracast и Chromecast в чем разница?

Miracast представляет собой технологию для передачи контента, которая используется Chromecast. Однако она имеет дополнительные возможности, которые здесь не используются — например, передача данных в обоих направлениях.

Miracast встроена в новые версии Windows. Эта технология позволяет передавать изображение экрана на другой гаджет. В то же время Chromecast передаёт контент только на телевизор. Для Miracast не обязательно наличие интернета. Он способен самостоятельно создать беспроводное соединение с нужным гаджетом.

Еще по теме:  Как подключить наушники к ТВ LG Смарт ТВ

Однако, он способен только отображать экран и не является телевизионным плеером. Chromecast специализирован, но демонстрирует более высокие функциональность и качество.

Какие устройства поддерживают Хромкаст от Гугл

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

Настройка

Если есть смартфон, работающий под управлением операционной системы Андроид, настройка выглядит следующим образом:

  1. Нужно подключить приставку к телевизору, затем включить его.
  2. На смартфоне нужно перейти на страницу http://google.com/chromecast/setup.
  3. Нужно загрузить и установить указанное приложение.
  4. После его запуска произойдёт сканирование сетей WiFi. Будет обнаружена беспроводная сеть Chromecast.
  5. Откроется страница с кнопкой для проведения установки. Нажать на кнопку Set up.
  6. Нужно подождать до тех пор, пока не установится соединение.
  7. На экране телевизоре будет показан код, состоящий из четырёх символов. Он должен отобразиться на экране смартфона. Пользователь должен подтвердить, видит ли он его. Для этого нужно нажать на соответствующую кнопку.
  8. Будет предоставлена возможность ввести своё название для Chromecast.
  9. Теперь нужно подключить устройство к действующей беспроводной сети, введя её название и ключ безопасности.

На этом первоначальная настройка параметров заканчивается. На экране смартфона появится сообщение об этом.

На экране телевизора также появится сообщение о готовности к работе.

Как пользоваться функцией Chromecast на телевизоре - пошаговая настройка

Работа с iOS

Настройку можно также производить с iOS устройства. Для этого необходимо скачать и установить приложение Chromecast с AppStore. Настройка проводится в точности также, как и для устройств, работающих под управлением Android. Youtube и другие аналогичные сервисы в iOS также могут работать с Chromecast.

Особенности Apple TV

Chromecast и Apple TV представляют собой по своим функциям во многом аналогичные устройства. Однако действуют они в соответствии с разными принципами.

Apple TV – это устройство, имеющее собственный пульт управления. Оно предоставляет работать с экранной клавиатурой, запускать свои приложения. Оно способно интегрироваться с другими устройствами в соответствии с протоколом AirPlay.

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

Chromecast в основном ориентирован на работу с видеопотоками. Он передаёт устройству данные для трансляции выбранного видеопотока и может управлять его воспроизведением. При этом саму трансляцию организует Chromecast.

Apple TV поддерживает больше потоковых сервисов по сравнению с Cromecast. В частности, речь идёт о Amazon Prime, HBO Go, Hulu Plus и некоторых других. Однако, последний, хотя более специализирован, демонстрирует лучшее качество работы.

Возможные проблемы и их решение

Иногда при настройке мобильный гаджет не может найти устройство. Это связано с тем, что сигнал недостаточно сильный. В этом случае требуется подойти со своим смартфоном ближе к телевизионному приёмнику.

Важно убедиться, что используемая беспроводная сеть обеспечивает достаточно мощный сигнал. Если это не так, то нужно провести соответствующую корректировку. Например, изменить параметры роутера или изменить его расположение.

Иногда могут помочь простые способы:

  1. Выключить и включить телевизор.
  2. Выйти из приложения, а потом запустить его снова.

Некачественное воспроизведение потоковых сервисов может быть следствием медленной связи через интернет. Например, если ролик из Youtube плохо загружается, то качество может быть переключено на более низкое. Чтобы избежать этого, можно подождать, пока видео буферизуется или вручную переключить его на более высокое качество.

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

Если увлекаетесь инвестициями, то рекомендую отличную статью про подсчёт комиссий и расходов на брокерских счетах.

Источник: zxcv.tv

У Chromecast с Google TV есть раздражающая проблема со звуком Bluetooth, но есть простое решение

У Chromecast с Google TV есть раздражающая проблема со звуком Bluetooth, но есть простое решение

Как отмечается в обзоре Райана, Chromecast с Google TV – отличный продукт, но он не лишен недостатков. С тех пор, как я получил его неделю назад, я обнаружил, что новый скин Android TV от Google вызывает столько удовольствия, что мой гораздо более мощный Nvidia Shield оказался на скамейке запасных. Однако опыт не идеален, и мне несколько раз приходилось закрывать некорректно работающие приложения. Самая заметная проблема, с которой я столкнулся, связана со звуком Bluetooth, но, к счастью, есть простое решение.

Когда я впервые подключил наушники Bluetooth к новому Chromecast и запустил YouTube, я был встревожен, обнаружив, что звук заикается и трескается. Что еще хуже, пострадали и видео. Я тестировал несколько разных пар наушников и вкладышей, но проблема не исчезла. Затем я попробовал Netflix и BT Sport, чтобы убедиться, что эти приложения работают должным образом.

Быстрый поиск показал, что не только я столкнулся с этой проблемой (см. Вот и Вот), причем в каждом случае виноваты приложения YouTube и YouTube Music.

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

Для этого вам нужно перейти в Настройки (через изображение вашего профиля в правом верхнем углу)> Приложения> YouTube> Очистить данные. В том маловероятном случае, если это не решит проблему, попробуйте удалить приложение и восстановить его – впрочем, вам не придется этого делать, если повезет. Поскольку проблема снова возникла для меня, кажется, это может быть только временное решение. Будем надеяться, что Google решит эту проблему, а также другие случайные проблемы со стабильностью и производительностью в предстоящем обновлении прошивки.

На аналогичной ноте пользователи также жаловались, что некоторые приложения вообще не выводят звук через Bluetooth – глядя на вас, HBO Max и Starz. Если вас это коснулось, отключите Объемный звук в Дисплей и звук настройки должны решить проблему.

Источник: china-phone.info

Оцените статью
Добавить комментарий