Стандарт управления бытовой электроникой мультимедийного интерфейса высокой четкости (HDMI-CEC) позволяет мультимедийным потребительским продуктам взаимодействовать и обмениваться информацией друг с другом. HDMI-CEC поддерживает множество функций, таких как сквозное дистанционное управление и управление звуком системы, но одна из самых популярных — One Touch Play. One Touch Play позволяет устройству-источнику мультимедиа включать телевизор и автоматически переключать его входной порт, поэтому вам не придется искать пульт от телевизора, чтобы переключиться с Chromecast на проигрыватель Blu-ray.
В Android 12 управление питанием дисплея, подключенного через HDMI, совпадает с управлением питанием внутреннего дисплея. Когда устройство воспроизведения HDMI выходит из спящего режима, оно пытается вывести подключенный телевизор из спящего режима и стать текущим активным источником посредством HDMI CEC One Touch Play. Если устройство переходит в спящий режим, когда оно является текущим активным источником, оно пытается выключить подключенный телевизор.
Поддержка HDMI-CEC обычно не является обязательной. Однако большинство производителей используют HDMI-CEC, поэтому их устройства работают с устройствами других компаний. Каждый производитель реализует стандарт HDMI-CEC по-разному, поэтому устройства не всегда понимают друг друга, а поддерживаемые функции различаются между устройствами. Из-за этого различия потребители не могут с уверенностью предполагать, что два продукта, заявляющие о поддержке CEC, полностью совместимы.
Поддержка HDMI-CEC 2.0 помогает улучшить совместимость между устройствами HDMI, если и отправляющее, и принимающее устройство поддерживают эту версию стандарта.
Решение
С появлением платформы Android TV Input Framework (TIF) HDMI-CEC объединяет все подключенные устройства и сводит к минимуму проблемы совместимости. Android создал системную службу под названием HdmiControlService
, чтобы облегчить эти болевые точки.
Предлагая HdmiControlService
как часть экосистемы Android, Android надеется предоставить:
- Стандартная реализация HDMI-CEC для всех производителей, что уменьшит несовместимость устройств. Раньше производителям приходилось разрабатывать собственные реализации HDMI-CEC или использовать сторонние решения.
- Услуга, которая хорошо протестирована на многочисленных устройствах HDMI-CEC, уже имеющихся на рынке. Android проводит тщательное исследование проблем совместимости, обнаруженных среди продуктов, и собирает полезные советы от разработчиков устройств, имеющих опыт работы с этой технологией. Служба CEC предназначена для поддержания здорового баланса между стандартом и модификациями этого стандарта, чтобы она работала с продуктами, которые люди уже используют.
Общий дизайн
HdmiControlService
связан с остальной частью системы, такой как TV Input Framework (TIF), служба аудио и служба питания, для реализации различных функций, определенных стандартом.
На следующей схеме показан переход от специального контроллера CEC к реализации более простого уровня аппаратной абстракции (HAL) HDMI-CEC.
Выполнение
На следующей схеме представлено подробное представление службы управления HDMI.
Вот ключевые ингредиенты для правильной реализации Android HDMI-CEC:
- Класс менеджера
HdmiControlManager
предоставляет привилегированным приложениям API. Системные службы, такие как служба TV Input Manager и служба аудио, могут использовать эту службу напрямую. - Служба предназначена для размещения нескольких типов логических устройств.
- HDMI-CEC связан с оборудованием через уровень аппаратной абстракции (HAL), чтобы упростить обработку различий в протоколах и механизмах сигнализации между устройствами. Определение HAL доступно производителям устройств для реализации уровня HAL.
Примечание . Производители устройств должны добавить следующую строку в PRODUCT_COPY_FILES
в device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
В зависимости от того, является ли ваше устройство устройством-приемником HDMI или устройством-источником HDMI, производителям устройств необходимо установить ro.hdmi.device_type
в device.mk
, чтобы HdmiControlService
работал правильно.
Для устройств-источников HDMI, таких как устройства Over the Top (OTT) или телеприставки (STB), установите:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Для устройств-приемников HDMI, таких как панельные телевизоры, установите:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Собственный контроллер CEC, предоставленный производителем устройства, не может сосуществовать с
HdmiControlService
. Его необходимо отключить или удалить. Общие требования для этого связаны с необходимостью обработки команд, специфичных для производителя. Обработчик команд, специфичный для производителя, должен быть включен в службу путем его расширения/изменения. Эта работа возложена на производителя устройства и не указана Android. Обратите внимание, что любые изменения, внесенные в службу для команд конкретного производителя, не должны мешать обработке стандартных команд, иначе устройство не будет совместимо с Android. - Доступ к услуге HDMI-CEC защищен уровнем защиты
SignatureOrSystem
. Только системные компоненты или приложения, размещенные в/system/priv-app
могут получить доступ к сервису. Это необходимо для защиты службы от злоупотреблений со стороны приложений со злыми намерениями.
Android поддерживает тип TV/Display(0)
, Playback device(4)
, которое может выдавать команду One Touch Play, чтобы стать активным источником, и Audio System (5)
, которая управляет системным аудиорежимом и ARC. Другие типы устройств (тюнер и рекордер) в настоящее время не поддерживаются.
HDMI-CEC HAL
API HDMI-CEC HAL позволяет HdmiControlService
использовать аппаратный ресурс для отправки/получения команд HDMI-CEC, настройки необходимых параметров и (необязательно) связи с микропроцессором на базовой платформе, который возьмет на себя управление CEC, пока Android система находится в режиме ожидания.
Версия | Функции | HAL-файлы |
---|---|---|
1.0 | Настройте данные HAL (адреса, функции). Отправьте команды HDMI-CEC. Зарегистрируйте обратный вызов для получения команд HDMI-CEC и событий горячего подключения. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | Представляем типы HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Тестирование
Реализации устройств HDMI-CEC тестируются и проверяются с помощью тестов CTS в соответствии с документацией HDMI-CEC CTS .
HDMI-CEC 2.0
Устройства-источники (воспроизведение) и приемники (телевизоры) Android поддерживают HDMI-CEC 2.0. HDMI-CEC 2.0 обеспечивает лучшую совместимость между устройствами HDMI, улучшения в системе удаленного управления и более обширные сертификационные испытания. Как правило, взаимодействие HDMI-CEC 2.0 с другими устройствами более эффективно, что приводит к меньшему трафику HDMI-CEC, а также к более быстрому взаимодействию.
Чтобы устройство поддерживало HDMI-CEC 2.0, в конфигурации устройства и пользователя должно быть настроено использование HDMI-CEC 2.0. Реализация HAL также должна сообщать о поддержке HDMI-CEC 2.0 при вызовах IHdmiCec#getCecVersion
.
Конфигурация ЦИК
Поведение HDMI-CEC можно настроить как во время сборки (производителями OEM, использующими RRO), так и во время выполнения (с помощью HdmiControlManager
@SystemApi).
Примеры настроек HDMI-CEC:
Параметр | Вариант |
---|---|
Включен или отключен HDMI-CEC. | Включено Неполноценный |
Объем сообщений управления питанием HDMI-CEC, отправляемых устройством воспроизведения. | Только на ТВ К телевизору и аудиосистеме Транслировать Никто |
Для каждого параметра доступные в настоящее время и разрешенные параметры могут быть запрошены приложениями во время выполнения.
,Стандарт управления бытовой электроникой мультимедийного интерфейса высокой четкости (HDMI-CEC) позволяет мультимедийным потребительским продуктам взаимодействовать и обмениваться информацией друг с другом. HDMI-CEC поддерживает множество функций, таких как сквозное дистанционное управление и управление звуком системы, но одна из самых популярных — One Touch Play. One Touch Play позволяет устройству-источнику мультимедиа включать телевизор и автоматически переключать его входной порт, поэтому вам не придется искать пульт от телевизора, чтобы переключиться с Chromecast на проигрыватель Blu-ray.
В Android 12 управление питанием дисплея, подключенного через HDMI, совпадает с управлением питанием внутреннего дисплея. Когда устройство воспроизведения HDMI выходит из спящего режима, оно пытается вывести подключенный телевизор из спящего режима и стать текущим активным источником посредством HDMI CEC One Touch Play. Если устройство переходит в спящий режим, когда оно является текущим активным источником, оно пытается выключить подключенный телевизор.
Поддержка HDMI-CEC обычно не является обязательной. Однако большинство производителей используют HDMI-CEC, поэтому их устройства работают с устройствами других компаний. Каждый производитель реализует стандарт HDMI-CEC по-разному, поэтому устройства не всегда понимают друг друга, а поддерживаемые функции различаются между устройствами. Из-за этого различия потребители не могут с уверенностью предполагать, что два продукта, заявляющие о поддержке CEC, полностью совместимы.
Поддержка HDMI-CEC 2.0 помогает улучшить совместимость между устройствами HDMI, если и отправляющее, и принимающее устройство поддерживают эту версию стандарта.
Решение
С появлением платформы Android TV Input Framework (TIF) HDMI-CEC объединяет все подключенные устройства и сводит к минимуму проблемы совместимости. Android создал системную службу под названием HdmiControlService
, чтобы облегчить эти болевые точки.
Предлагая HdmiControlService
как часть экосистемы Android, Android надеется предоставить:
- Стандартная реализация HDMI-CEC для всех производителей, что уменьшит несовместимость устройств. Раньше производителям приходилось разрабатывать собственные реализации HDMI-CEC или использовать сторонние решения.
- Услуга, которая хорошо протестирована на многочисленных устройствах HDMI-CEC, уже имеющихся на рынке. Android проводит тщательное исследование проблем совместимости, обнаруженных среди продуктов, и собирает полезные советы от разработчиков устройств, имеющих опыт работы с этой технологией. Служба CEC предназначена для поддержания здорового баланса между стандартом и модификациями этого стандарта, чтобы она работала с продуктами, которые люди уже используют.
Общий дизайн
HdmiControlService
связан с остальной частью системы, такой как TV Input Framework (TIF), служба аудио и служба питания, для реализации различных функций, определенных стандартом.
На следующей схеме показан переход от специального контроллера CEC к реализации более простого уровня аппаратной абстракции (HAL) HDMI-CEC.
Выполнение
На следующей схеме представлено подробное представление службы управления HDMI.
Вот ключевые ингредиенты для правильной реализации Android HDMI-CEC:
- Класс менеджера
HdmiControlManager
предоставляет привилегированным приложениям API. Системные службы, такие как служба TV Input Manager и служба аудио, могут использовать эту службу напрямую. - Служба предназначена для размещения нескольких типов логических устройств.
- HDMI-CEC связан с оборудованием через уровень аппаратной абстракции (HAL), чтобы упростить обработку различий в протоколах и механизмах сигнализации между устройствами. Определение HAL доступно производителям устройств для реализации уровня HAL.
Примечание . Производители устройств должны добавить следующую строку в PRODUCT_COPY_FILES
в device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
В зависимости от того, является ли ваше устройство устройством-приемником HDMI или устройством-источником HDMI, производителям устройств необходимо установить ro.hdmi.device_type
в device.mk
, чтобы HdmiControlService
работал правильно.
Для устройств-источников HDMI, таких как устройства Over the Top (OTT) или телеприставки (STB), установите:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Для устройств-приемников HDMI, таких как панельные телевизоры, установите:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Собственный контроллер CEC, предоставленный производителем устройства, не может сосуществовать с
HdmiControlService
. Его необходимо отключить или удалить. Общие требования для этого связаны с необходимостью обработки команд, специфичных для производителя. Обработчик команд, специфичный для производителя, должен быть включен в службу путем его расширения/изменения. Эта работа возложена на производителя устройства и не указана Android. Обратите внимание, что любые изменения, внесенные в службу для команд конкретного производителя, не должны мешать обработке стандартных команд, иначе устройство не будет совместимо с Android. - Доступ к услуге HDMI-CEC защищен уровнем защиты
SignatureOrSystem
. Только системные компоненты или приложения, размещенные в/system/priv-app
могут получить доступ к сервису. Это необходимо для защиты службы от злоупотреблений со стороны приложений со злыми намерениями.
Android поддерживает тип TV/Display(0)
, Playback device(4)
, которое может выдавать команду One Touch Play, чтобы стать активным источником, и Audio System (5)
, которая управляет системным аудиорежимом и ARC. Другие типы устройств (тюнер и рекордер) в настоящее время не поддерживаются.
HDMI-CEC HAL
API HDMI-CEC HAL позволяет HdmiControlService
использовать аппаратный ресурс для отправки/получения команд HDMI-CEC, настройки необходимых параметров и (необязательно) связи с микропроцессором на базовой платформе, который возьмет на себя управление CEC, пока Android система находится в режиме ожидания.
Версия | Функции | HAL-файлы |
---|---|---|
1.0 | Настройте данные HAL (адреса, функции). Отправьте команды HDMI-CEC. Зарегистрируйте обратный вызов для получения команд HDMI-CEC и событий горячего подключения. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | Представляем типы HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Тестирование
Реализации устройств HDMI-CEC тестируются и проверяются с помощью тестов CTS в соответствии с документацией HDMI-CEC CTS .
HDMI-CEC 2.0
Устройства-источники (воспроизведение) и приемники (телевизоры) Android поддерживают HDMI-CEC 2.0. HDMI-CEC 2.0 обеспечивает лучшую совместимость между устройствами HDMI, улучшения в системе удаленного управления и более обширные сертификационные испытания. Как правило, взаимодействие HDMI-CEC 2.0 с другими устройствами более эффективно, что приводит к меньшему трафику HDMI-CEC, а также к более быстрому взаимодействию.
Чтобы устройство поддерживало HDMI-CEC 2.0, в конфигурации устройства и пользователя должно быть настроено использование HDMI-CEC 2.0. Реализация HAL также должна сообщать о поддержке HDMI-CEC 2.0 при вызовах IHdmiCec#getCecVersion
.
Конфигурация ЦИК
Поведение HDMI-CEC можно настроить как во время сборки (производителями OEM, использующими RRO), так и во время выполнения (с помощью HdmiControlManager
@SystemApi).
Примеры настроек HDMI-CEC:
Параметр | Вариант |
---|---|
Включен или отключен HDMI-CEC. | Включено Неполноценный |
Объем сообщений управления питанием HDMI-CEC, отправляемых устройством воспроизведения. | Только на ТВ К телевизору и аудиосистеме Транслировать Никто |
Для каждого параметра доступные в настоящее время и разрешенные параметры могут быть запрошены приложениями во время выполнения.