
Платформа ввода Android TV (TIF) упрощает доставку контента в режиме реального времени на Android TV. TIF предоставляет производителям стандартный API для создания модулей ввода для управления Android TV, а также обеспечивает поиск и рекомендации в режиме реального времени с помощью метаданных, публикуемых TV Input.
Данная платформа не нацелена на внедрение телевизионных стандартов или региональных требований, но упрощает для производителей устройств задачу соответствия региональным стандартам цифрового телевещания без необходимости повторного внедрения. Документация в этом разделе также может быть полезна разработчикам сторонних приложений, желающих создавать собственные телевизионные входы.
Компоненты
Реализация Android TV Input Framework включает в себя TV Input Manager. TIF работает с TV App — системным приложением, которое нельзя заменить сторонним, — для доступа к встроенным каналам и каналам IP-тюнера. TV App взаимодействует с модулями TV Input, поставляемыми производителем устройства или другими поставщиками, через TV Input Manager.
Структура телевизионного ввода состоит из:
- ТВ-провайдер (
com.android.providers.tv.TvProvider
): база данных каналов, программ и связанных разрешений - Приложение TV (
com.android.tv.TvActivity
): приложение, которое обрабатывает взаимодействие с пользователем - TV Input Manager (
android.media.tv.TvInputManager
): позволяет TV Inputs взаимодействовать с TV App. - ТВ-вход: приложение, представляющее физические или виртуальные тюнеры и входные порты.
- TV Input HAL (модуль
tv_input
): определение оборудования, которое позволяет системным TV Input получать доступ к оборудованию, специфичному для телевизора, при его реализации. - Родительский контроль: технология, позволяющая блокировать каналы и программы
- HDMI-CEC: технология, позволяющая удаленно управлять различными устройствами через HDMI
- Tuner Framework: фреймворк для встроенного ТВ-тюнера
- MediaCas: фреймворк для условного доступа
- Менеджер ресурсов тюнера: служба управления аппаратными ресурсами для входа телевизора, MediaCas и входа встроенного тюнера.
Эти компоненты подробно описаны ниже. Подробную информацию об архитектуре Android TV Input Framework см. на следующей диаграмме.

Поток
Вот как реализуется эта архитектура:
- Пользователь видит и взаимодействует с телевизионным приложением — системным приложением, которое нельзя заменить сторонним приложением.
- Приложение TV отображает AV-контент с входа телевизора.
- Приложение TV не может напрямую взаимодействовать с телевизионными входами. Диспетчер телевизионных входов определяет состояние телевизионных входов для приложения TV. Подробнее об этих ограничениях см. в разделе «Диспетчер телевизионных входов» ниже.
Разрешения
- Только телевизионные входы
signatureOrSystem
и телевизионное приложение имеют полный доступ к базе данных телевизионного провайдера и могут получать KeyEvents. - Доступ к HAL TV Input через службу TV Input Manager возможен только для системных TV Input. Доступ к TV Input осуществляется индивидуально через сеансы TV Input Manager.
- Сторонние ТВ-входы имеют пакетно-защищенный доступ к базе данных ТВ-провайдера и могут ЧИТАТЬ/ЗАПИСЫВАТЬ только соответствующие строки пакета.
- Входы сторонних телевизоров могут отображать как собственный контент, так и контент с телевизионных входов-переходников производителя устройства, например, HDMI1. Они не могут отображать контент с телевизионных входов, не поддерживающих сквозной сигнал, например, со встроенного или IPTV-тюнера.
- Разрешение
TV_INPUT_HARDWARE
для приложения аппаратного ТВ-входа даёт сигнал службе диспетчера ТВ-входов уведомить службу ТВ-входов при загрузке о необходимости вызвать службу диспетчера ТВ-входов и добавить свои ТВ-входы. Это разрешение позволяет приложению аппаратного ТВ-входа поддерживать несколько ТВ-входов для каждой службы ТВ-входов, а также динамически добавлять и удалять поддерживаемые ТВ-входы.
ТВ-провайдер
База данных ТВ-провайдера хранит каналы и программы с ТВ-входов. ТВ-провайдер также публикует и управляет соответствующими разрешениями, чтобы ТВ-входы могли видеть только свои собственные записи. Например, конкретный ТВ-вход может видеть только предоставленные им каналы и программы и ему запрещён доступ к каналам и программам других ТВ-входов.
Поставщик услуг телевидения сопоставляет «жанр вещания» с «каноническим жанром» на внутреннем уровне. Входы для телевидения отвечают за заполнение поля «жанр вещания» значением из базового стандарта вещания, а поле «канонический жанр» автоматически заполняется соответствующим жанром из android.provider.TvContract.Genres
. Например, при использовании стандарта вещания ATSC A/65 и программы с жанром 0x25 (что означает «Спорт») вход для телевидения заполнит поле «жанр вещания» строкой «Спорт», а поставщик услуг телевидения заполнит поле «канонический жанр» сопоставленным значением android.provider.TvContract.Genres.SPORTS
.
Подробную информацию о провайдере ТВ смотрите на схеме ниже.

Только приложения в привилегированном системном разделе могут читать всю базу данных провайдера ТВ.
Сквозные входы телевизора не сохраняют каналы и программы.
Помимо стандартных полей для каналов и программ, база данных телепровайдеров также предлагает поле типа BLOB COLUMN_INTERNAL_PROVIDER_DATA
в каждой таблице, которое TV Inputs может использовать для хранения произвольных данных. Эти BLOB-данные могут включать пользовательскую информацию, например, частоту соответствующего тюнера, и могут быть предоставлены в буфере протокола или в другой форме. Доступно поле «Searchable», позволяющее сделать определённые каналы недоступными для поиска (например, в соответствии с требованиями к защите контента в конкретной стране).
Примеры полей базы данных
Поставщик услуг телевидения поддерживает структурированные данные в таблицах каналов ( android.provider.TvContract.Channels
) и программ ( android.provider.TvContract.Programs
). Эти таблицы заполняются и используются входами телевизора и системными приложениями, такими как приложение TV. Эти таблицы содержат четыре типа полей:
- Отображение: поля отображения содержат информацию, которую приложения могут захотеть сделать видимой для пользователя, например название канала (
COLUMN_DISPLAY_NAME
) или номер (COLUMN_DISPLAY_NUMBER
), или название просматриваемой программы. - Метаданные: для идентификации контента используются три поля в соответствии с соответствующими стандартами, например идентификатор транспортного потока канала (
COLUMN_TRANSPORT_STREAM_ID
), идентификатор исходной сети (COLUMN_ORIGINAL_NETWORK_ID
) и идентификатор сервиса (COLUMN_SERVICE_ID
). - Внутренние данные : поля, предназначенные для пользовательского использования телевизионных входов.
Некоторые поля, напримерCOLUMN_INTERNAL_PROVIDER_DATA
, представляют собой настраиваемые поля BLOB, в которых ТВ-вход может хранить произвольные метаданные о своем канале или программе. - Флаг: поля флагов определяют, следует ли ограничить доступ к каналу для поиска, просмотра или просмотра. Это можно сделать только на уровне канала. Все программы подчиняются настройкам канала.
-
COLUMN_SEARCHABLE
: Ограничение поиска по некоторым каналам может быть обязательным в некоторых регионах.COLUMN_SEARCHABLE = 0
означает, что канал не должен отображаться в результатах поиска. -
COLUMN_BROWSABLE
: Видно только системным приложениям. Запрещает просмотр канала приложениями.COLUMN_BROWSABLE = 0
означает, что канал не следует включать в список каналов. -
COLUMN_LOCKED
: Видно только системным приложениям. Запрещает просмотр канала недействительными учётными записями без ввода PIN-кода.COLUMN_LOCKED = 1
означает, что канал должен быть защищён родительским контролем.
Более полный список полей см. в android/frameworks/base/media/java/android/media/tv/TvContract.java
Разрешения и контроль доступа
Все поля видны всем, у кого есть доступ к соответствующей строке. Пользователи не имеют прямого доступа ни к одному полю; они видят только то, что отображается в приложении TV, системных приложениях или на входах TV.
- В каждой строке указано
PACKAGE_NAME
— пакет (приложение), которому принадлежит эта строка. Оно проверяется при выполнении запросов, вставок и обновлений через TvProvider.java. TV-вход может получить доступ только к той информации, которую он записал, и отделен от информации, предоставляемой другими TV-входами. - Разрешения на ЧТЕНИЕ и ЗАПИСЬ через AndroidManifest.xml (требуется согласие пользователя) для определения доступных каналов.
- Только приложения
signatureOrSystem
могут получить разрешениеACCESS_ALL_EPG_DATA
для доступа ко всей базе данных.
Менеджер телевизионного ввода
TV Input Manager предоставляет центральный системный API для всей платформы Android TV Input Framework. Он управляет взаимодействием между приложениями и TV Inputs и обеспечивает функции родительского контроля. Сеансы TV Input Manager должны создаваться индивидуально для TV Inputs. TV Input Manager обеспечивает доступ к установленным TV Inputs, чтобы приложения могли:
- Перечислите телевизионные входы и проверьте их статус.
- Создавайте сеансы и управляйте слушателями
В сеансах ТВ-вход может быть настроен приложением TV App только на URI, добавленные в базу данных ТВ-провайдера, за исключением сквозных ТВ-входов, которые можно настроить с помощью TvContract.buildChannelUriForPassthroughInput()
. Для ТВ-входа также может быть задана громкость. ТВ-входы, предоставленные и подписанные производителем устройства (приложения-сигнатуры) или другие приложения, установленные в системном разделе, будут иметь доступ ко всей базе данных ТВ-провайдера. Этот доступ можно использовать для создания приложений для просмотра и поиска по всем доступным ТВ-каналам и программам.
Приложение может создать и зарегистрировать TvInputCallback
в android.media.tv.TvInputManager
для обратного вызова при изменении состояния телевизионного входа или при добавлении или удалении телевизионного входа. Например, приложение для телевизора может отреагировать на отключение телевизионного входа, отображая его как отключенный и запрещая его выбор.
TV Input Manager абстрагирует взаимодействие между ТВ-приложением и ТВ-входами. Стандартный интерфейс TV Input Manager и TV Input позволяет различным производителям устройств создавать собственные ТВ-приложения, обеспечивая при этом работу всех сторонних ТВ-входов во всех ТВ-приложениях.
ТВ-входы
Входы для телевизора являются приложениями Android в том смысле, что у них есть файл AndroidManifest.xml и они устанавливаются (через Play, предустановлены или загружены из сторонних источников). Android TV поддерживает предустановленные системные приложения, приложения с подписью производителя устройства и входы для телевизора сторонних производителей.
Некоторые входы, такие как HDMI или вход для встроенного тюнера, могут быть предоставлены только производителем, поскольку они взаимодействуют напрямую с аппаратным обеспечением. Другие, такие как IPTV, смещение места и внешние STB, могут быть предоставлены сторонними разработчиками в виде APK-файлов в Google Play. После загрузки и установки новый вход можно выбрать в приложении TV.
Пример сквозного ввода

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

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

В этом примере внешний ТВ-вход STB предоставлен сторонним поставщиком. Поскольку этот ТВ-вход не может напрямую получать видеосигнал HDMI, он должен пройти через диспетчер входов TV и использовать HDMI-вход TV, предоставленный производителем устройства.
Через диспетчер входов телевизора внешний вход STB TV может взаимодействовать с входом HDMI TV и запрашивать у него разрешение на показ видео по HDMI1. Таким образом, вход STB TV может управлять телевизором, в то время как вход HDMI TV, предоставленный производителем, будет обрабатывать видео.
Пример «картинка в картинке» (PIP)

На схеме выше показано, как кнопки пульта дистанционного управления передаются на определённый вход телевизора для отображения «картинка в картинке» (PIP). Эти нажатия кнопок интерпретируются аппаратным драйвером, предоставленным производителем устройства, который преобразует аппаратные скан-коды в коды клавиш Android и передаёт их стандартным функциям ввода Android InputReader
и InputDispatcher
как KeyEvents . Они, в свою очередь, запускают события в приложении TV, если оно находится в фокусе.
Только системные TV-входы могут получать InputEvents
и только при наличии системного разрешения RECEIVE_INPUT_EVENT
. TV-вход отвечает за определение того, какие события InputEvents следует использовать, и должен разрешить TV-приложению обрабатывать те ключи, которые ему не нужны.
Приложение TV отвечает за определение того, какой системный TV-вход активен, т. е. выбран пользователем, а также за распознавание входящих KeyEvents
и их направление в правильный сеанс диспетчера TV-входов, вызывая dispatchInputEvent()
для передачи события соответствующему TV-входу.
Пример ввода MHEG-5
На следующей диаграмме показано более подробное представление того, как KeyEvents
маршрутизируются через Android TIF.

На нём показана схема работы приложения Red Button, распространённого в Европе для доступа пользователей к интерактивным приложениям на телевизорах. Приложение может быть доставлено по этому транспортному потоку. При нажатии кнопки пользователи могут взаимодействовать с этими приложениями вещания. Например, вы можете использовать эти приложения вещания для доступа к связанным веб-страницам или результатам спортивных матчей.
Информацию о том, как приложения для вещания взаимодействуют с приложением TV, см. в разделе «Приложение для вещания» .
В этом примере:
- Приложение TV находится в фокусе и получает все ключи.
-
KeyEvents
(например, красная кнопка) передается на активный вход телевизора какInputEvents.
- Системный ТВ-вход интегрируется со стеком MHEG-5 и имеет системное разрешение
RECEIVE_INPUT_EVENT
. - При получении кода активации (например, красной кнопки) ТВ-вход активирует приложение вещания.
- Телевизионный вход использует
KeyEvents
какInputEvents
, а вещательное приложение находится в фокусе и обрабатываетInputEvents
до тех пор, пока не будет закрыто.
Примечание : телевизионные входы сторонних производителей никогда не получают ключи.
ТВ-вход HAL
TV Input HAL помогает разрабатывать TV Inputs для доступа к оборудованию, специфичному для телевизоров. Как и другие HAL для Android, TV Input HAL ( tv_input
) доступен в исходном дереве AOSP, и поставщик разрабатывает его реализацию.
Примечание : Начиная с Android 14, интерфейс HAL телевизионного входа определяется с помощью AIDL .
ТВ-приложение
Системное приложение TV App представляет пользователю прямой эфирный телеконтент. Вместе с платформой Android предоставляется эталонное приложение TV App (Live TV), которое может использоваться как есть, настраиваться, расширяться или заменяться производителями устройств. Исходный код доступен в проекте Android Open Source Project, и начать работу с ним можно в статье «Эталонный пример приложения TV App» .
Производители устройств могут расширять свои телевизионные приложения для реализации функций, специфичных для производителя устройства или страны, однако это не входит в сферу действия TIF или эталонного телевизионного приложения.
Как минимум, системное ТВ-приложение должно выполнять следующие задачи:
Настройка и конфигурирование
- Автоматическое определение ТВ-входов
- Позвольте ТВ-входам инициировать настройку каналов
- Управление родительскими настройками
- Редактировать каналы
Просмотр
- Доступ и навигация по всем телеканалам
- Доступ к панели информации о телепрограмме
- Отображение данных электронного программного гида (EPG)
- Поддержка нескольких аудиодорожек и дорожек субтитров
- Подать заявку на проверку PIN-кода родительского контроля
- Разрешить наложение пользовательского интерфейса ТВ-входа для стандарта ТВ (HbbTV и т. д.)
- Заполнение результатов поиска телеканалов и программ
- Отображение карточек привязки приложений
- Поддержка API сдвига во времени
- Управление функционалом DVR и поддержка API записи ТВ
Этот набор функций будет расширяться с выходом новых версий Android, в которых расширены API TIF платформы. CTS Verifier обеспечивает тестирование совместимости.
Поддержка сторонних ТВ-входов
Android TV предоставляет API-интерфейсы разработчиков для сторонних телевизионных входов, позволяя установленным приложениям добавлять программные каналы в прямую трансляцию. Для обеспечения совместимости с устройством Android системное приложение TV несёт определённую ответственность за предоставление пользователю сторонних телевизионных входов и каналов. Референтное приложение Live TV обеспечивает совместимую реализацию; при замене системного приложения TV производители устройств должны обеспечить аналогичную совместимость своих приложений, чтобы удовлетворить ожидания разработчиков на всех устройствах Android TV.
Системное ТВ-приложение должно отображать сторонние входы наряду со стандартным сервисом прямого эфира на устройстве. API разработчиков обещают, что пользователи смогут находить каналы (после их установки) в рамках своего стандартного ТВ-интерфейса.
Допускается визуальное различие между встроенными каналами и сторонними каналами, как определено в разделе «Приложение для телевизора» в CDD для Android.
В следующих разделах показано, как приложение Live TV выполняет требования CDD.
Новая настройка канала
Добавление новых сторонних входов/каналов начинается с того, что пользователь находит и устанавливает вход для телевизора из магазина приложений, например Google Play.
Некоторые сторонние ТВ-входы автоматически добавляют каналы в базу данных TvProvider. Однако большинство из них предоставляют действие настройки, позволяющее пользователю настроить каналы, ввести данные для входа и выполнить другие действия. Системное ТВ-приложение должно гарантировать возможность активации этого действия настройки, поэтому CDD требует, чтобы сторонние ТВ-входы были максимально удалены от основного ТВ-приложения.
В базовом приложении Live TV предусмотрено меню «Источники каналов» для доступа к входам.




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

Если пользователь предпринимает действия с помощью уведомления, он может выбрать настройку своих источников, как показано на рисунке 10.
Ознакомьтесь с разделом Define Your TV Input Service, чтобы узнать о требованиях разработчиков в этой области.
Настройте список каналов
Производители устройств могут предоставлять пользовательский интерфейс для скрытия определённых каналов и предоставления пользователям возможности управлять собственными программами передач (EPG). Live TV включает эту функцию.


ЭПГ
Разработчикам сторонних решений ввода необходимо быть уверенными в том, что пользователи смогут легко переходить к своим каналам во время обычного использования на всех совместимых устройствах Android TV.
Каналы со сторонних источников должны быть представлены в стандартном электронном программном гидае (EPG) для просмотра телепередач в прямом эфире. Можно использовать визуальное разделение или отдельные категории для сторонних каналов (см. раздел «Приложение ТВ» в руководстве по Android CDD) — главное, чтобы пользователи могли найти установленные каналы.
Поиск
Производители должны реализовать приложение TV, чтобы включить результаты поиска по глобальным поисковым запросам для обеспечения наилучшего пользовательского опыта. Live TV предоставляет реализацию (см. ) , которая предоставляет результаты из сторонних источников (требуется для совместимости с платформой), а также из встроенных источников.
Сдвиг времени
Для устройств на базе Android 6.0 и выше приложение TV должно поддерживать API-интерфейсы Android для работы со сдвигом во времени . Кроме того, производители должны реализовать в приложении TV элементы управления воспроизведением, позволяющие пользователям приостанавливать, возобновлять, перематывать и перематывать воспроизведение.
Для ТВ-входов, поддерживающих функцию сдвига во времени, ТВ-приложение должно отображать элементы управления воспроизведением.

DVR
Для устройств на базе Android 7.0 и выше телевизионное приложение должно поддерживать API записи телепередач платформы Android для поддержки, вывода списка и воспроизведения записанных программ.
Это позволяет производителям устройств подключать свои подсистемы DVR к TIF и значительно сокращать затраты на интеграцию функций DVR в телевизор. Кроме того, это позволяет сторонним производителям предлагать системы DVR стороннего производителя, которые можно подключать к устройствам Android TV.
Помимо записи прямого эфира, приложение TV App также обрабатывает конфликты ресурсов. Например, если устройство оснащено двумя тюнерами, оно может записывать две программы одновременно. Если пользователь запрашивает запись трёх программ, приложение TV App должно обработать конфликт и либо вывести уведомление, либо запросить у пользователя приоритет для этих запросов.
Телевизионные приложения также могут реализовывать более сложную логику, например, спрашивать у пользователя, хочет ли он записать все будущие эпизоды сериала, когда он запрашивает запись одного эпизода.
На следующей схеме представлена возможная реализация DVR на Android TV.

- Служба ввода ТВ сообщает ТВ-приложению, сколько тюнеров доступно, чтобы ТВ-приложение могло справиться с возможным конфликтом ресурсов.
- Приложение TV получает инициированный пользователем запрос на запись телепрограммы.
- Приложение TV сохраняет расписание записи во внутренней базе данных.
- Когда приходит время записи, приложение TV отправляет запрос на настройку канала, связанного с записью.
- Служба телевизионного ввода получает этот запрос, отвечает, имеются ли соответствующие ресурсы, и настраивается на канал.
- Затем приложение TV передает запрос на начало записи в диспетчер входов TV.
- Служба телевизионного ввода получает этот запрос и начинает запись.
- Служба телевизионного ввода сохраняет реальные видеоданные в своем хранилище, которое может быть внешним хранилищем или облачным хранилищем.
- Когда приходит время закончить запись, приложение TV передает запрос на остановку записи в диспетчер входных сигналов TV.
- После того как служба ввода ТВ получает запрос, она останавливает запись и добавляет связанные с ней метаданные к поставщику ТВ, чтобы приложение ТВ могло показывать запись пользователям по запросу.
Дополнительную информацию о реализации функций записи в службе ТВ-входа см. в этой статье «Запись ТВ» .
Полезные ресурсы
- Наиболее полными источниками информации являются Android CDD и документированные API-интерфейсы разработчиков.
- CTS Verifier использует API в рамках программы тестирования совместимости. Запуск этой функции на Live TV может быть полезен для оценки требований к EPG, поиску, родительскому контролю и другим функциям в контексте сторонних входных данных.
- Ознакомьтесь с разделом Define Your TV Input Service, чтобы узнать о требованиях разработчиков в этой области.
Родительский контроль
Родительский контроль позволяет пользователю блокировать нежелательные каналы и программы, но обойти блокировку можно, введя PIN-код.
Ответственность за функциональность родительского контроля распределяется между ТВ-приложением, службой TV Input Manager, ТВ-провайдером и TV Input.
Родительский контроль является обязательным и регулируется CTS Verifier.
В ряде стран определены системы рейтингов, которые TV Inputs могут использовать через API TVContentRating . Кроме того, TV Inputs могут регистрировать собственные системы рейтингов, как это было продемонстрировано в тесте CTS Verifier, который вводит «поддельный» рейтинг. В странах, где существует стандартная система рейтингов, производителям устройств рекомендуется комбинировать родительский контроль TV Input Framework с любыми другими механизмами, которые они могут использовать.
ТВ-провайдер
В каждой строке канала есть поле COLUMN_LOCKED
, которое позволяет заблокировать просмотр определённых каналов без ввода PIN-кода. Программное поле COLUMN_CONTENT_RATING
предназначено для отображения и не используется для родительского контроля.
Менеджер телевизионного ввода
TV Input Manager сохраняет все заблокированные TvContentRating
и отвечает на isRatingBlocked()
, чтобы сообщить, следует ли блокировать контент с заданным рейтингом.
ТВ-вход
TV Input проверяет, следует ли блокировать текущий контент, вызывая метод isRatingBlocked()
в TV Input Manager при изменении рейтинга отображаемого контента (при смене программы или канала) или при изменении настроек родительского контроля (при ACTION_BLOCKED_RATINGS_CHANGED
и ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
). Если контент необходимо заблокировать, TV Input отключает аудио и видео и уведомляет приложение TV о блокировке текущего контента, вызывая notifyContentBlocked(TvContentRating)
. Если контент не нужно блокировать, TV Input включает аудио и видео и уведомляет приложение TV о разрешении текущего контента, вызывая notifyContentAllowed()
.
ТВ-приложение
Чтобы обеспечить поддержку API родительского контроля и, следовательно, создать совместимую платформу, системное телевизионное приложение должно предоставлять пользователям возможность управлять родительским контролем, в том числе для любых пользовательских рейтингов, зарегистрированных определенными приложениями.
Приложение TV отображает пользовательский интерфейс с PIN-кодом, когда получает уведомление от входа телевизора о том, что текущий контент заблокирован, или когда пользователь пытается просмотреть заблокированный канал.
Приложение TV не сохраняет настройки родительского контроля напрямую. Когда пользователь меняет настройки родительского контроля, все заблокированные значения TvContentRating
сохраняются диспетчером входов TV, а заблокированные каналы — поставщиком услуг TV.
Чтобы изменить настройки родительского контроля, приложению TV необходимо объявить разрешение android.permission.MODIFY_PARENTAL_CONTROLS
Производителям устройств рекомендуется:
- Выполните тест родительского контроля CTS Verifier на эталонном приложении Live TV для демонстрации требований совместимости.
- Используйте приложение Live TV в качестве справочного материала для своего собственного ТВ-приложения: в частности, ознакомьтесь с исходным кодом ContentRatingsManager и RatingSystemsFragment , а также с тем, как они обрабатывают пользовательские рейтинги.
HDMI-CEC
HDMI-CEC позволяет одному устройству управлять другим, тем самым позволяя управлять несколькими устройствами домашнего кинотеатра одним пультом ДУ. Этот интерфейс используется в Android TV для ускорения настройки и удалённого управления различными входами телевизора через центральное приложение. Например, он может переключать входы, включать и выключать устройства и многое другое.
В Android TIF реализован HDMI-CEC в качестве службы управления HDMI, поэтому производителям устройств достаточно разработать низкоуровневые драйверы, взаимодействующие с облегчённым HAL Android TV, минуя более сложную бизнес-логику. Предоставляя стандартную реализацию, Android стремится снизить проблемы совместимости за счёт сокращения фрагментированных реализаций и поддержки выборочных функций. Служба управления HDMI использует существующие службы Android, включая входные данные и питание.
Это означает, что существующие реализации HDMI-CEC необходимо будет переработать для взаимодействия с Android TIF. Мы рекомендуем, чтобы аппаратная платформа содержала микропроцессор для получения команд CEC на включение и других команд.

- Шина CEC получает команду от текущего активного источника на переключение на другой источник.
- Драйвер передает команду HDMI-CEC HAL.
- HAL уведомляет все
ActiveSourceChangeListeners
. - Служба управления HDMI уведомляется об изменении источника через
ActiveSourceChangeListener
. - Служба TV Input Manager генерирует намерение для ТВ-приложения переключить источник.
- Затем телевизионное приложение создает сеанс диспетчера телевизионных входов для телевизионного входа, на который выполняется переключение, и вызывает
setMain
для этого сеанса. - Сеанс диспетчера телевизионных входов передает эту информацию на вход HDMI телевизора.
- Вход HDMI TV запрашивает установку боковой полосы.
- Служба диспетчера входов телевизоров формирует соответствующую команду управления маршрутизацией обратно в службу управления HDMI при настройке поверхности.
Руководство по интеграции ТВ
Приложение для трансляции
Поскольку в каждой стране имеются свои специфические требования к вещанию (MHEG, телетекст, HbbTV и т. д.), производители должны предоставлять собственные решения для приложений вещания, например:
- MHEG: собственный стек
- Телетекст: собственный стек
- HbbTV: решение HbbTV от Vewd Software
В выпуске Android L Android TV ожидает, что производители устройств будут использовать системных интеграторов или решения Android для региональных телевизионных стеков, передадут поверхность телевизионным программным стекам или передадут необходимый ключевой код для взаимодействия с устаревшими стеками.
Вот как взаимодействуют приложение для вещания и приложение для телевидения:
- ТВ-приложение находится в фокусе и получает все ключи.
- Приложение TV передает ключи (например, красную кнопку) на устройство ввода телевизора.
- Устройство ввода ТВ внутренне интегрируется с устаревшим телевизионным стеком.
- При получении кода активации (например, красной кнопки) устройство ввода телевизора активирует приложения вещания.
- Приложение для вещания берет на себя фокус в телевизионном приложении и обрабатывает действия пользователя.
Для голосового поиска/рекомендаций приложение вещания может поддерживать функцию голосового поиска внутри приложения.