El estándar de Control de productos electrónicos de consumo de la interfaz multimedia de alta definición (HDMI-CEC) permite que los productos electrónicos de consumo multimedia se comuniquen y compartan información entre sí. HDMI-CEC admite muchas funciones, como la transmisión del control remoto y el control de audio del sistema, pero una de las más populares es la reproducción con un solo toque. La función One Touch Play permite que un dispositivo fuente de contenido multimedia encienda la TV y cambie su puerto de entrada automáticamente, por lo que no tienes que buscar el control remoto de la TV para cambiar del Chromecast al reproductor de Blu-ray.
En Android 12, el control de encendido de la pantalla conectada por HDMI se alinea con el control de encendido de la pantalla interna. Cuando se activa un dispositivo de reproducción HDMI, intenta activar la TV conectada y convertirse en la fuente activa actual a través de la función Reproducción con un solo toque de HDMI-CEC. Si el dispositivo entra en modo de suspensión mientras es la fuente activa actual, intenta apagar la TV conectada.
La compatibilidad con HDMI-CEC suele ser opcional. Sin embargo, la mayoría de los fabricantes adoptaron HDMI-CEC para que sus dispositivos funcionen con los de otras empresas. Cada fabricante implementa el estándar HDMI-CEC de diferentes maneras, por lo que los dispositivos no siempre se entienden entre sí y las funciones compatibles varían entre los dispositivos. Debido a esta variación, los consumidores no pueden suponer con certeza que dos productos que afirman ser compatibles con CEC lo sean por completo.
La compatibilidad con HDMI-CEC 2.0 ayuda a mejorar la compatibilidad entre dispositivos HDMI si tanto el dispositivo emisor como el receptor admiten esta versión del estándar.
Solución
Con la introducción del marco de trabajo de entrada de Android TV (TIF), HDMI-CEC reúne todos los dispositivos conectados y minimiza los problemas de compatibilidad.
Android creó un servicio del sistema llamado HdmiControlService
para aliviar estos puntos débiles.
Al ofrecer HdmiControlService
como parte del ecosistema de Android, Android espera proporcionar lo siguiente:
- Una implementación estándar de HDMI-CEC para todos los fabricantes, lo que reducirá la incompatibilidad de los dispositivos Anteriormente, los fabricantes debían desarrollar sus propias implementaciones de HDMI-CEC o usar soluciones de terceros.
- Un servicio que se probó exhaustivamente en numerosos dispositivos HDMI-CEC que ya están en el mercado. Android ha realizado investigaciones rigurosas sobre los problemas de compatibilidad que se encuentran entre los productos y ha recopilado consejos útiles de implementadores de dispositivos con experiencia en la tecnología. El servicio de CEC está diseñado para mantener un equilibrio saludable entre el estándar y las modificaciones a ese estándar, de modo que funcione con los productos que las personas ya usan.
Diseño general
HdmiControlService
se conecta con el resto del sistema, como el framework de entrada de TV (TIF), el servicio de audio y el servicio de energía, para implementar las diversas funciones que especifica el estándar.
En el siguiente diagrama, se muestra el cambio de un controlador CEC personalizado a una implementación de la capa de abstracción de hardware (HAL) de HDMI-CEC más simple.

Figura 1: Reemplazo del servicio de control de HDMI
Implementación
Consulta el siguiente diagrama para obtener una vista detallada del servicio de control de HDMI.

Figura 2: Detalles del servicio de control de HDMI
Estos son los ingredientes clave para una implementación adecuada de HDMI-CEC en Android:
- Una clase de administrador
HdmiControlManager
proporciona a las apps con privilegios la API. Los servicios del sistema, como el servicio de TV Input Manager y el servicio de Audio, pueden usar el servicio directamente. - El servicio está diseñado para permitir el alojamiento de más de un tipo de dispositivo lógico.
- HDMI-CEC se conecta con el hardware a través de una capa de abstracción de hardware (HAL) para simplificar el manejo de las diferencias del protocolo y los mecanismos de señalización entre los dispositivos. La definición de HAL está disponible para que los fabricantes de dispositivos la usen para implementar la capa de HAL.
Nota: Los fabricantes de dispositivos deben agregar la siguiente línea en PRODUCT_COPY_FILES
en device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
Según si el dispositivo es un receptor o una fuente HDMI, los fabricantes deben establecer ro.hdmi.device_type
en device.mk
para que HdmiControlService
funcione correctamente.
Para los dispositivos fuente HDMI, como los dispositivos de transmisión libre (OTT) o los decodificadores (STB), configura lo siguiente:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Para los dispositivos de receptor HDMI, como los televisores de panel, configura lo siguiente:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Un controlador CEC propietario proporcionado por el fabricante del dispositivo no puede coexistir con
HdmiControlService
. Debe inhabilitarse o quitarse. Los requisitos comunes para esto provienen de la necesidad de controlar comandos específicos del fabricante. El controlador de comandos específico del fabricante debe incorporarse al servicio extendiéndolo o modificándolo. Este trabajo se deja a cargo del fabricante del dispositivo y no lo especifica Android. Ten en cuenta que cualquier cambio que se realice en el servicio para los comandos específicos del fabricante no debe interferir en la forma en que se controlan los comandos estándar, ya que, de lo contrario, el dispositivo no será compatible con Android. - El acceso al servicio de HDMI-CEC está protegido con el nivel de protección
SignatureOrSystem
. Solo los componentes del sistema o las apps ubicadas en/system/priv-app
pueden acceder al servicio. Esto se hace para proteger el servicio del abuso por parte de apps con intenciones maliciosas.
Android admite los tipos TV/Display(0)
y Playback
device(4)
, que pueden emitir el comando One Touch Play para convertirse en la fuente activa, y Audio System (5)
, que controla el modo de audio del sistema y el ARC.
Por el momento, no se admiten otros tipos de dispositivos (sintonizador y grabador).
HAL de HDMI-CEC
La API de HAL de HDMI-CEC permite que el HdmiControlService
use el recurso de hardware para enviar y recibir comandos de HDMI-CEC, configurar los parámetros necesarios y (opcionalmente) comunicarse con el microprocesador de la plataforma subyacente que se hará cargo del control de CEC mientras el sistema Android esté en modo de espera.
Versión | Funciones | Archivos HAL |
---|---|---|
1.0 | Configura los datos del HAL (direcciones, funciones). Envía comandos HDMI-CEC. Registra una devolución de llamada para recibir comandos HDMI-CEC y eventos de conexión en caliente. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | Se introducen los tipos de HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Prueba
Las implementaciones de HDMI-CEC de los dispositivos se prueban y verifican a través de pruebas de CTS según la documentación de CTS de HDMI-CEC.
HDMI-CEC 2.0
Los dispositivos fuente (reproducción) y receptor (panel de TV) de Android admiten HDMI-CEC 2.0. HDMI-CEC 2.0 ofrece una mejor interoperabilidad entre los dispositivos HDMI, mejoras en la transmisión del control remoto y pruebas de certificación más exhaustivas. En general, las interacciones de HDMI-CEC 2.0 con otros dispositivos son más eficientes, lo que genera menos tráfico de HDMI-CEC y también interacciones más rápidas.
Para que un dispositivo admita HDMI-CEC 2.0, la configuración del dispositivo y del usuario debe establecerse para usar HDMI-CEC 2.0. La implementación de HAL también debe informar la compatibilidad con HDMI-CEC 2.0 en las llamadas a IHdmiCec#getCecVersion
.
Configuración de CEC
El comportamiento de HDMI-CEC se puede configurar en el momento de la compilación (por los OEM que usan RRO) y en el tiempo de ejecución (por HdmiControlManager
@SystemApi).
Ejemplos de configuración de HDMI-CEC:
Configuración | Opción |
---|---|
Indica si el HDMI-CEC está habilitado o inhabilitado. | Habilitado Inhabilitado |
Es el alcance de los mensajes de control de energía de HDMI-CEC que envía un dispositivo de reproducción. | Solo a la TV A la TV y al sistema de audio Transmisión Ninguno |
Las apps pueden consultar cada parámetro de configuración disponible actualmente y las opciones permitidas en el tiempo de ejecución.