Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

TV Input Framework

Значок Android TV HAL

Android TV Input Framework (TIF) упрощает доставку живого контента на Android TV. Android TIF предоставляет стандартный API-интерфейс для производителей для создания модулей ввода для управления Android TV, а также позволяет осуществлять прямой просмотр ТВ и давать рекомендации по метаданным, публикуемым TV Input.

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

Составные части

В реализацию Android TV Input Framework входит TV Input Manager. TIF работает с приложением TV, системным приложением, которое не может быть заменено сторонним приложением, для доступа к встроенным каналам и каналам IP-тюнера. Приложение TV TV связывается с модулями TV Input, предоставленными производителем устройства или другими сторонами, через TV Input Manager.

Платформа TV Input состоит из:

  • TV Provider ( com.android.providers.tv.TvProvider ): база данных каналов, программ и соответствующих разрешений
  • TV App ( com.android.tv.TvActivity ): приложение, которое обрабатывает взаимодействие с пользователем
  • TV Input Manager ( android.media.tv.TvInputManager ): позволяет ТВ-входам взаимодействовать с ТВ-приложением
  • TV Input: приложение, представляющее физические или виртуальные тюнеры и входные порты
  • TV Input HAL (модуль tv_input ): аппаратное определение, которое позволяет системным телевизионным входам получать доступ к оборудованию для ТВ при реализации
  • Родительский контроль: технология, позволяющая блокировать каналы и программы
  • HDMI-CEC: технология, позволяющая удаленно управлять различными устройствами через HDMI

Эти компоненты подробно описаны ниже. См. Следующую схему для подробного представления архитектуры Android TV Input Framework.

Обзор архитектуры Android TIF
Рисунок 1. Архитектура Android TV Input Framework (TIF)

поток

Вот как работает архитектура:

  1. Пользователь видит и взаимодействует с приложением TV, системным приложением, которое нельзя заменить сторонним приложением.
  2. Приложение TV отображает содержимое AV с входа TV.
  3. Приложение TV не может напрямую общаться с входами телевизора. TV Input Manager определяет состояние ТВ-входов для ТВ-приложения. См. TV Input Manager ниже для более подробной информации об этих ограничениях.

права доступа

  • Только signatureOrSystem TV Inputs и TV App имеют полный доступ к базе данных TV Provider и могут получать KeyEvents.
  • Только системные ТВ-входы могут получить доступ к ТВ-входу HAL через службу TV Input Manager. Доступ к телевизионным входам осуществляется один-к-одному через сеансы TV Input Manager.
  • Телевизионные входы сторонних производителей имеют доступ с блокировкой к базе данных поставщика ТВ и могут ПРОЧИТАТЬ / ЗАПИСАТЬ только соответствующие строки пакета.
  • Телевизионные входы сторонних производителей могут отображать либо собственный контент, либо контент с проходных телевизионных входов производителя устройства, таких как HDMI1. Они не могут отображать контент с непроходных телевизионных входов, таких как встроенный или IPTV-тюнер.
  • Разрешение TV_INPUT_HARDWARE для аппаратного приложения TV Input сигнализирует службе TV Input Manager, чтобы при загрузке уведомить службу TV Input о вызове службы TV Input Manager и добавить ее TV Inputs. Это разрешение позволяет аппаратному приложению ТВ-входа поддерживать несколько ТВ-входов для каждой услуги ТВ-входа, а также иметь возможность динамически добавлять и удалять поддерживаемые ТВ-входы.

Телевизионный провайдер

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

Провайдер телевидения внутренне преобразует «жанр трансляции» в «канонический жанр». Телевизионные входы отвечают за заполнение «жанра широковещания» значением в базовом стандарте широковещания, а поле «канонический жанр» будет автоматически заполняться правильным ассоциированным жанром из android.provider.TvContract.Genres . Например, в стандарте вещания ATSC A / 65 и программе с жанром 0x25 (что означает «Спорт»), на телевизионном входе будет указан «жанр вещания» строкой «Спорт», а провайдер телевидения заполнит поле «канонический жанр» сопоставленное значение android.provider.TvContract.Genres.SPORTS .

См. Диаграмму ниже для подробного представления провайдера телевидения.

Android TV Провайдер
Рисунок 2. Поставщик Android TV

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

Сквозные телевизионные входы не хранят каналы и программы.

В дополнение к стандартным полям для каналов и программ, в базе данных телевизионного провайдера также имеется поле типа BLOB COLUMN_INTERNAL_PROVIDER_DATA , в каждой таблице, которую телевизионные входы могут использовать для хранения произвольных данных. Эти BLOB-данные могут включать в себя пользовательскую информацию, такую ​​как частота соответствующего тюнера, и могут предоставляться в буфере протокола или в другой форме. Поле «Доступное для поиска» доступно для того, чтобы сделать определенные каналы недоступными при поиске (например, для удовлетворения требований конкретной страны к защите контента).

Примеры полей базы данных

Поставщик TV поддерживает структурированные данные в таблицах каналов ( android.provider.TvContract.Channels ) и программ ( android.provider.TvContract.Programs ). Эти таблицы заполняются и доступны через ТВ-входы и системные приложения, такие как ТВ-приложение. Эти таблицы имеют четыре типа полей:

  • Отображение. Поля отображения содержат информацию, которую приложения могут захотеть сделать видимой для пользователя, например имя канала ( COLUMN_DISPLAY_NAME ) или номер ( COLUMN_DISPLAY_NUMBER ), или название просматриваемой программы.
  • Метаданные: есть три поля для идентификации контента в соответствии с соответствующими стандартами, такими как идентификатор транспортного потока канала ( COLUMN_TRANSPORT_STREAM_ID ), исходный идентификатор сети ( COLUMN_ORIGINAL_NETWORK_ID ) и идентификатор службы ( COLUMN_SERVICE_ID ).
  • Внутренние данные : поля, предназначенные для пользовательского использования телевизионных входов.
    Некоторые поля, такие как COLUMN_INTERNAL_PROVIDER_DATA , являются настраиваемыми BLOB-полями, где вход TV может хранить произвольные метаданные об их канале или программе.
  • Пометить: поля Пометки показывают, должен ли канал быть ограничен от поиска, просмотра или просмотра. Это может быть установлено только на уровне канала. Все программы относятся к настройкам канала.
    • COLUMN_SEARCHABLE : ограничение поиска по некоторым каналам может быть требованием в определенных регионах. COLUMN_SEARCHABLE = 0 означает, что канал не должен отображаться в результатах поиска.
    • COLUMN_BROWSABLE : COLUMN_BROWSABLE для системных приложений. Ограничение просмотра канала приложениями. COLUMN_BROWSABLE = 0 означает, что канал не должен быть включен в список каналов.
    • COLUMN_LOCKED : COLUMN_LOCKED для системных приложений. Ограничение просмотра канала недействительными аккаунтами без ввода PIN-кода. COLUMN_LOCKED = 1 означает, что канал должен быть защищен родительским контролем.

Для более полного списка полей см. android/frameworks/base/media/java/android/media/tv/TvContract.java

Разрешения и контроль доступа

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

  • У каждой строки есть PACKAGE_NAME , пакет (приложение), которому принадлежит эта строка, проверено на Query, Insert, Update через TvProvider.java. Вход TV может иметь доступ только к информации, которую он записал, и отключен от информации, предоставленной другими входами TV.
  • ЧИТАТЬ, ЗАПИСАТЬ разрешения через AndroidManifest.xml (требуется согласие пользователя) для определения доступных каналов.
  • Только приложения signatureOrSystem могут получить разрешение ACCESS_ALL_EPG_DATA для доступа ко всей базе данных.

TV Input Manager

TV Input Manager предоставляет центральный системный API для всей Android TV Input Framework. Он управляет взаимодействием между приложениями и ТВ-входами и обеспечивает функции родительского контроля. Сеансы TV Input Manager должны создаваться один на один с TV Inputs. Диспетчер телевизионных входов обеспечивает доступ к установленным телевизионным входам, поэтому приложения могут:

  • Список ТВ входов и проверить их статус
  • Создавайте сессии и управляйте слушателями

Для сеансов ТВ-вход может быть настроен ТВ-приложением только на URI, которые он добавил в базу данных ТВ-провайдера, за исключением сквозных ТВ-входов, которые можно настроить на использование TvContract.buildChannelUriForPassthroughInput() . На входе телевизора также может быть установлена ​​громкость. Телевизионные входы, предоставленные и подписанные производителем устройства (приложения для подписи) или другими приложениями, установленными в системном разделе, будут иметь доступ ко всей базе данных поставщика ТВ. Этот доступ можно использовать для создания приложений для просмотра и поиска по всем доступным телеканалам и программам.

Приложение может создать и зарегистрировать TvInputCallback с помощью android.media.tv.TvInputManager для обратного TvInputCallback при изменении состояния телевизионного входа или при добавлении или удалении телевизионного входа. Например, приложение TV может реагировать на отключение входа телевизора, отображая его как отключенное и предотвращая его выбор.

Диспетчер входов TV абстрагирует связь между приложением TV и входами TV. Стандартный интерфейс TV Input Manager и TV Input позволяет нескольким производителям устройств создавать свои собственные телевизионные приложения, помогая всем сторонним телевизионным входам работать со всеми телевизионными приложениями.

ТВ входы

Телевизионные входы - это приложения для Android в том смысле, что они имеют AndroidManifest.xml и устанавливаются (через Play, предварительно установлены или загружены с боковой стороны). Android TV поддерживает предустановленные системные приложения, приложения, подписанные производителем устройства, и сторонние ТВ-входы.

Некоторые входы, такие как вход HDMI или вход встроенного тюнера, могут быть предоставлены только производителем, поскольку они напрямую взаимодействуют с базовым оборудованием. Другие, такие как IPTV, смена места и внешний STB, могут быть предоставлены третьими лицами в виде APK-файлов в Google Play Store. После загрузки и установки новый вход можно выбрать в приложении TV.

Сквозной пример ввода

Система ввода Android TV
Рисунок 3. Системный ввод Android TV

В этом примере вход TV, предоставленный производителем устройства, является доверенным и имеет полный доступ к поставщику TV. В качестве проходного телевизионного входа он не регистрирует никаких каналов или программ у провайдера телевидения. Чтобы получить URI, используемый для ссылки на сквозной ввод, используйте метод утилиты android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) . Приложение TV обменивается данными с диспетчером ввода TV для доступа к входу HDMI TV.

Пример встроенного тюнера

Android TV Встроенный вход тюнера
Рисунок 4. Встроенный тюнер Android TV

В этом примере ТВ-вход встроенного тюнера, предоставленный производителем устройства, является доверенным и имеет полный доступ к поставщику ТВ.

Пример стороннего ввода

Android TV сторонний ввод
Рисунок 5. Сторонний ввод Android TV

В этом примере внешний вход STB TV предоставляется третьей стороной. Поскольку этот ТВ-вход не имеет прямого доступа к входящему видеосигналу HDMI, он должен пройти через Диспетчер ТВ-входа и использовать ТВ-вход HDMI, предоставленный производителем устройства.

Через Диспетчер ТВ-входа внешний ТВ-вход STB может общаться с ТВ-входом HDMI и запрашивать показ видео по HDMI1. Таким образом, ТВ-вход STB может управлять телевизором, в то время как предоставленный производителем HDMI-ТВ-вход воспроизводит видео.

Пример картинка в картинке (PIP)

Android TV KeyEvents
Рисунок 6. Android TV KeyEvents

На приведенной выше схеме показано, как кнопки на пульте дистанционного управления передаются на определенный телевизионный вход для отображения изображения в картинке (PIP). Эти нажатия кнопок интерпретируются драйвером оборудования, поставляемым производителем устройства, который преобразует аппаратные коды сканирования в коды клавиш Android и передает их в стандартные функции конвейера ввода Android InputReader и InputDispatcher как KeyEvents . Они, в свою очередь, вызывают события в приложении TV, если оно находится в фокусе.

Только системные телевизионные входы имеют право на получение InputEvents , и только если они имеют системное разрешение RECEIVE_INPUT_EVENT . TV Input отвечает за определение того, какие InputEvents использовать, и должен позволять приложению TV обрабатывать ключи, которые ему не нужны.

Приложение TV отвечает за знание того, какая система TV Input активна, то есть выбрана пользователем, и устраняет неоднозначность входящих KeyEvents и направляет их в правильный сеанс TV Input Manager, вызывая dispatchInputEvent() для передачи события на соответствующий TV Input. ,

Пример ввода MHEG-5

Следующая диаграмма показывает более подробное представление о том, как KeyEvents маршрутизируются через Android TIF.

Android TV Пример красной кнопки
Рисунок 7. Пример красной кнопки Android TV

Он отображает поток приложений «Красная кнопка», распространенных в Европе для предоставления пользователям доступа к интерактивным приложениям на их телевизорах. Приложение может быть доставлено через этот транспортный поток. Когда кнопка нажата, она позволяет пользователям взаимодействовать с этими широковещательными приложениями. Например, вы можете использовать эти широковещательные приложения для доступа к соответствующим веб-страницам или спортивных результатов.

См. Раздел « Приложения трансляции », чтобы узнать, как приложения трансляции взаимодействуют с приложением TV.

В этом примере:

  1. Приложение TV находится в фокусе и получает все ключи.
  2. KeyEvents (например, красная кнопка) передается на активный ТВ-вход как InputEvents.
  3. Системный ТВ-вход интегрируется со стеком MHEG-5 и имеет системное разрешение RECEIVE_INPUT_EVENT .
  4. Получив код активации ключа (например, красную кнопку), TV Input активирует приложение широковещания.
  5. ТВ-ввод использует KeyEvents как InputEvents а широковещательное приложение находится в фокусе и обрабатывает InputEvents до InputEvents пор, пока не будет отклонено.

Примечание . Сторонние телевизионные входы никогда не получают ключи.

ТВ вход HAL

TV Input HAL помогает разрабатывать телевизионные входы для доступа к оборудованию, специфичному для телевизора. Как и в других HAL для Android, TV Input HAL ( tv_input ) доступен в дереве исходного кода AOSP, и поставщик разрабатывает его реализацию.

ТВ приложение

Система TV App представляет пользователю живой ТВ-контент. Приложение эталонного телевидения (Live TV) предоставляется вместе с платформой Android, которое может использоваться как есть, настраиваться, расширяться или заменяться производителями устройств. Исходный код доступен в Android Open Source Project, и вы можете начать с ним в статье приложения Reference TV .

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

Как минимум, системное приложение TV должно выполнять следующие задачи:

Настройка и настройка

  • Автоопределение телевизионных входов
  • Пусть TV Inputs инициирует настройку канала
  • Контроль родительских настроек
  • Редактировать каналы

Просмотр

  • Доступ и навигация по всем телеканалам
  • Панель доступа к телевизионным программам
  • Отображение данных электронного руководства по программированию (EPG)
  • Поддержка нескольких аудио и дорожек субтитров
  • Поставить родительский контроль PIN-кода вызов
  • Разрешить оверлей интерфейса TV Input для телевизионного стандарта (HbbTV и т. Д.)
  • Заполните результаты поиска для телеканалов и программ
  • Показать приложение, связывающее карты
  • Поддержка API с временным сдвигом
  • Обработка функциональности DVR и поддержка API записи ТВ

Этот набор функций будет расширяться в соответствии с новыми версиями Android, в которых расширены API-интерфейсы TIF для платформы. CTS Verifier обеспечивает покрытие теста совместимости.

Поддержка сторонних ТВ входов

Android TV предоставляет API-интерфейсы разработчика для сторонних телевизионных входов, что позволяет установленным приложениям передавать программные каналы в режим прямого эфира. Чтобы обеспечить совместимость реализации устройства Android, системное приложение TV имеет некоторые обязанности по предоставлению пользователю сторонних телевизионных входов и каналов. Ссылочное приложение Live TV обеспечивает совместимую реализацию; при замене системного приложения для ТВ производители устройств должны обеспечить аналогичную совместимость своих приложений, чтобы соответствовать ожиданиям разработчиков на всех устройствах Android TV.

Системное приложение TV должно отображать сторонние входы вместе со стандартным сервисом прямой трансляции на устройстве. Обещание API-интерфейсов для разработчиков заключается в том, что пользователи смогут находить каналы (после их установки) в рамках своего стандартного телевидения.

Визуальное различие между встроенными каналами и сторонними каналами допускается, как определено в разделе «Приложение для телевизора» на компакт-диске Android.

В следующих разделах показано, как приложение Live TV удовлетворяет требованиям CDD.

Новая настройка канала

Добавление новых сторонних входов / каналов начинается с того, что пользователь находит и устанавливает ТВ-вход из магазина приложений, такого как Google Play.

Некоторые сторонние телевизионные входы автоматически добавляют каналы в базу данных TvProvider. Однако большинство из них предоставляют действия по настройке, позволяющие пользователю настроить свои каналы, предоставить данные для входа и другие действия. Системное приложение TV должно гарантировать, что пользователь может активировать эту операцию установки, поэтому CDD требует, чтобы сторонние входы были минимальными навигационными действиями вдали от основного приложения TV.

Эталонное приложение Live TV предоставляет меню источников каналов для доступа к входам.

Перейдите в настройки
Рисунок 8. Зайдите в настройки .

Перейти к источнику канала в настройках
Рисунок 9. Перейдите к источникам каналов в настройках.

Выберите свой источник из списка.
Рисунок 10. Выберите ваш источник из списка.

Добавить каналы из вашего источника
Рисунок 11. Добавление каналов из вашего источника.

Кроме того, в верхней части меню TV App после установки нового TvInput отображается карточка с уведомлением, чтобы пользователь мог перейти непосредственно к программе установки:

Уведомление о том, что доступны новые источники каналов.
Рисунок 12. Уведомление, показывающее, что доступны новые источники каналов.

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

См. Определение службы ввода ТВ для ожидания разработчиков в этой области.

Настройте список каналов

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

Откройте список каналов в настройках.
Рисунок 13. Откройте список каналов в настройках .

Настройте свой список каналов.
Рисунок 14. Настройка списка каналов.

ЭПП

Сторонние разработчики ввода должны быть уверены, что пользователи могут легко переходить к своим каналам во время общего использования на всех совместимых устройствах Android TV.

Каналы от сторонних входов должны быть представлены как часть стандартного живого телевидения EPG устройства. Можно использовать визуальное разделение или отдельные категории для сторонних каналов (см. Раздел «Приложение для телевизора» на компакт-диске Android), что является ключом к тому, что пользователи могут найти каналы, которые они установили.

Производители должны внедрить приложение TV для включения результатов поиска по глобальным поисковым запросам, чтобы обеспечить наилучшее взаимодействие с пользователем. Live TV предоставляет реализацию (см. Com.android.tv.search.TvProviderSearch ), которая предоставляет результаты от сторонних входных данных (необходимых для совместимости с платформой), а также встроенные входные данные.

Временной сдвиг

Для устройств на Android 6.0 и более поздних версиях приложение TV должно поддерживать API-интерфейсы сдвига времени в платформе Android. Кроме того, производители должны реализовать средства управления воспроизведением в приложении TV, которые позволяют пользователям приостанавливать, возобновлять, перематывать и ускорять воспроизведение.

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

Элементы управления воспроизведением
Рисунок 15. Элементы управления воспроизведением

DVR

Для устройств на Android 7.0 и более поздних версиях приложение TV должно поддерживать API-интерфейсы записи телевизионных программ на платформе Android, чтобы поддерживать, просматривать и воспроизводить записанные программы.

Это позволяет производителям устройств подключать свои подсистемы DVR к TIF и значительно сокращать усилия по интеграции, необходимые для включения или интеграции функций DVR на телевизионном устройстве. Это также позволяет третьим сторонам предоставлять вторичные системы DVR, которые можно подключить к устройству Android TV.

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

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

Смотрите следующую диаграмму для просмотра возможной реализации DVR в Android TV.

Цифровая видеозапись в Android TV
Рисунок 16. Цифровая видеозапись в Android TV

  1. Служба ввода TV сообщает приложению TV, сколько тюнеров доступно, чтобы приложение TV могло обрабатывать возможные конфликты ресурсов.
  2. Приложение TV получает пользовательский запрос на запись телепрограммы.
  3. Приложение TV сохраняет расписание записи в своей внутренней базе данных.
  4. Когда пришло время записи, приложение TV передает запрос на настройку на канал, связанный с записью.
  5. Служба TV Input получает этот запрос, отвечает, есть ли соответствующие ресурсы, и настраивается на канал.
  6. Затем приложение TV передает запрос на начало записи в TV Input Manager.
  7. Служба TV Input получает этот запрос и начинает запись.
  8. Служба TV Input хранит фактические видеоданные в своем хранилище, которое может быть внешним хранилищем или облачным хранилищем.
  9. Когда приходит время закончить запись, приложение TV передает запрос на остановку записи в TV Input Manager.
  10. Как только служба ввода ТВ получает запрос, она останавливает запись и добавляет соответствующие метаданные к поставщику ТВ, чтобы приложение ТВ могло показывать запись пользователям по запросу.

Для получения дополнительной информации о реализации функций записи в службе TV Input см. Эту статью TV Recording .

Полезные ресурсы

  • Android CDD и документированные API-интерфейсы разработчика являются окончательными ссылками.
  • CTS Verifier использует API в рамках программы тестирования совместимости. Запуск этого с Live TV может быть полезным способом увидеть EPG, поиск, родительский контроль и другие требования в контексте сторонних материалов.
  • См. Определение службы ввода ТВ для ожиданий разработчиков в этой области.

Родительский контроль

Родительский контроль позволяет пользователю блокировать нежелательные каналы и программы, но обходить блокировку путем ввода PIN-кода.

Ответственность за функции родительского контроля распределяется между приложением TV, службой TV Input Manager, TV Provider и TV Input.

Родительский контроль является обязательным и распространяется на CTS Verifier.

В ряде стран определены рейтинговые системы, которые телевизионные входы могут использовать через API TVContentRating . Кроме того, телевизионные входы могут регистрировать свои собственные пользовательские рейтинговые системы, что продемонстрировано тестом CTS Verifier, который вводит «фальшивый» рейтинг. В тех странах, где существует стандартная рейтинговая система, производителям устройств рекомендуется сочетать Родительский контроль TV Input Framework с любыми другими механизмами, которые они могут включать.

Телевизионный провайдер

Каждая строка канала имеет поле COLUMN_LOCKED , которое используется для блокировки просмотра определенных каналов без ввода PIN-кода. Поле программы COLUMN_CONTENT_RATING предназначено для отображения и не используется для обеспечения родительского контроля.

TV Input Manager

TV Input Manager сохраняет каждый заблокированный TvContentRating и отвечает на isRatingBlocked() чтобы сообщить, следует ли блокировать контент с данным рейтингом.

ТВ вход

TV Input проверяет, следует ли блокировать текущий контент, вызывая isRatingBlocked() в TV Input Manager, когда рейтинг отображаемого контента изменился (при изменении программы или канала) или изменились настройки родительского контроля (для ACTION_BLOCKED_RATINGS_CHANGED и ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) , Если контент должен быть заблокирован, TV Input отключает аудио и видео и уведомляет телевизионное приложение о том, что текущий контент заблокирован, вызывая notifyContentBlocked(TvContentRating) . Если контент не должен быть заблокирован, ТВ-вход включает аудио и видео и уведомляет ТВ-приложение о текущем контенте, вызывая notifyContentAllowed() .

ТВ приложение

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

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

Приложение TV не сохраняет настройки родительского контроля напрямую. Когда пользователь изменяет настройки родительского контроля, все заблокированные TvContentRating сохраняются в TV Input Manager, а заблокированные каналы - в TV Provider.

Приложение TV должно объявить разрешение android.permission.MODIFY_PARENTAL_CONTROLS , чтобы изменить настройки родительского контроля.

Производителям устройств рекомендуется:

  • Выполните тест родительского контроля CTS Verifier в отношении эталонного приложения Live TV для демонстрации требований совместимости.
  • Используйте приложение Live TV в качестве справочного материала для своего собственного телевизионного приложения: в частности, см. Источник ContentRatingsManager и RatingSystemsFragment и как они обрабатывают пользовательские рейтинги.

HDMI-CEC

HDMI-CEC позволяет одному устройству управлять другим, что позволяет одному пульту дистанционного управления управлять несколькими устройствами в домашнем кинотеатре. Он используется Android TV для ускорения настройки и позволяет удаленно управлять различными телевизионными входами через центральное приложение TV. Например, он может переключать входы, включать или выключать устройства и многое другое.

Android TIF реализует HDMI-CEC в качестве службы управления HDMI, поэтому производителям устройств просто необходимо разработать драйверы низкого уровня, которые взаимодействуют с облегченным HAL для Android TV, пропуская более сложную бизнес-логику. Предоставляя стандартную реализацию, Android стремится уменьшить проблемы совместимости, уменьшая фрагментированные реализации и поддержку выборочных функций. Служба управления HDMI использует существующие службы Android, включая вход и питание.

Это означает, что существующие реализации HDMI-CEC необходимо будет переработать для взаимодействия с Android TIF. Мы рекомендуем, чтобы аппаратная платформа содержала микропроцессор для получения питания CEC и других команд.

Интеграция CEC на Android TV
Рисунок 17. Интеграция CEC на Android TV

  1. Шина CEC получает команду от текущего активного источника для переключения на другой источник.
  2. Драйвер передает команду в HDMI-CEC HAL.
  3. HAL уведомляет все ActiveSourceChangeListeners .
  4. Служба управления HDMI получает уведомление об изменении источника через ActiveSourceChangeListener .
  5. Служба TV Input Manager создает для приложения TV намерение переключить источник.
  6. Затем приложение TV создает сеанс диспетчера ввода TV для переключаемого входа TV и вызывает setMain в этом сеансе.
  7. Сеанс TV Input Manager передает эту информацию на HDMI TV Input.
  8. Вход HDMI TV запрашивает настройку поверхности боковой полосы.
  9. Служба TV Input Manager генерирует соответствующую команду управления маршрутизацией обратно в HDMI Control Service, когда поверхность установлена.

Рекомендации по интеграции ТВ

Широковещательное приложение

Поскольку в каждой стране существуют специфические для вещания требования (MHEG, Teletext, HbbTV и т. Д.), Ожидается, что производители предоставят свои собственные решения для вещательного приложения, например:

  • MHEG: собственный стек
  • Телетекст: собственный стек
  • HbbTV: решение HbbTV от Vewd Software

В выпуске Android L Android TV ожидает, что производители устройств будут использовать системных интеграторов или решения Android для региональных стеков ТВ, передавать поверхность программным стекам ТВ или передавать необходимый ключевой код для взаимодействия со старыми стеками.

Вот как взаимодействуют приложение вещания и приложение TV:

  1. Приложение TV находится в фокусе, получая все ключи.
  2. Приложение TV передает ключи (например, красную кнопку) на устройство ввода TV.
  3. Устройство TV Input внутренне интегрируется с устаревшим телевизионным стеком.
  4. Получив код ключа активации (например, красную кнопку), устройство ввода TV активирует широковещательные приложения.
  5. Вещательное приложение фокусируется в ТВ-приложении и обрабатывает действия пользователя.

Для голосового поиска / рекомендации приложение широковещания может поддерживать встроенный поиск для голосового поиска.