Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Структура ввода ТВ

Значок Android TV HAL

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

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

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

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

Платформа ТВ-ввода состоит из:

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

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

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

поток

Вот как реализована архитектура:

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

Разрешения

  • Только ТВ-входы signatureOrSystem и ТВ-приложение имеют полный доступ к базе данных ТВ-провайдера и могут получать события 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 Inputs отвечают за заполнение «жанра вещания» значением в базовом стандарте вещания, а поле «канонический жанр» будет автоматически заполнено правильным связанным жанром из android.provider.TvContract.Genres . Например, со стандартом вещания ATSC A / 65 и программой с жанром 0x25 (что означает «Спорт») TV Input будет заполнять «жанр вещания» строкой «Sports», а TV Provider заполнит поле «canonical genre» с сопоставленное значение android.provider.TvContract.Genres.SPORTS .

См. Схему ниже, чтобы получить подробное представление о ТВ-провайдере.

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

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

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

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

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

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

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

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

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

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

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

Диспетчер ТВ-входа

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

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

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

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

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

ТВ входы

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

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

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

Вход системы Android TV
Рисунок 3. Вход системы Android TV

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

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

Вход для встроенного тюнера Android TV
Рис. 4. Вход для встроенного тюнера Android TV

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

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

Сторонний ввод Android TV
Рис. 5. Сторонний ввод для Android TV

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

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

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

Ключевые события Android TV
Рисунок 6. Android TV KeyEvents

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

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

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

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

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

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

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

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

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

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

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

ТВ вход HAL

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

Приложение для ТВ

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

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

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

Установка и настройка

  • Автоопределение ТВ-входов
  • Разрешить входам TV инициировать настройку канала
  • Контроль родительских настроек
  • Редактировать каналы

Просмотр

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

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

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

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

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

Допускается визуальное различие между встроенными и сторонними каналами, как определено в разделе TV App Android CDD.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EPG

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

Каналы со сторонних входов должны быть представлены как часть стандартного электронного телепрограмма устройства. Для сторонних каналов можно использовать визуальное разделение или отдельные категории (см. Раздел TV App в Android CDD). Главное то, что пользователи могут найти каналы, которые они установили.

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

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

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

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

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

DVR

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

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

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

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

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

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

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

Дополнительные сведения о реализации функций записи в службе ТВ-ввода см. В этой статье « Запись ТВ» .

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

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

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

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

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

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

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

Провайдер ТВ

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

Диспетчер ТВ-входа

Диспетчер ТВ-ввода хранит каждый заблокированный TvContentRating и отвечает на isRatingBlocked() чтобы сообщить, следует ли блокировать контент с данным рейтингом.

ТВ вход

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

Приложение для ТВ

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

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

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

Приложение 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, поэтому производителям устройств просто нужно разработать драйверы низкого уровня, которые взаимодействуют с облегченным Android TV HAL, пропуская более сложную бизнес-логику. Предоставляя стандартную реализацию, 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 Input Manager для ТВ-входа, на который переключается, и вызывает setMain в этом сеансе.
  7. Сеанс диспетчера ТВ-входа передает эту информацию на ТВ-вход HDMI.
  8. Вход HDMI TV запрашивает настройку боковой полосы.
  9. Служба TV Input Manager генерирует соответствующую команду управления маршрутизацией обратно в службу управления HDMI, когда поверхность настроена.

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

Приложение для трансляции

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

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

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

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

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

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