Servicio de control de HDMI-CEC

Control de artículos electrónicos de consumo de interfaz multimedia de alta definición (HDMI-CEC) permite que los productos de consumo multimedios se comuniquen y intercambiar información entre sí. HDMI-CEC admite muchas funciones, como Transferencia de control remoto y control de audio del sistema, pero es uno de los más populares es One Touch Play. One Touch Play permite que un dispositivo de fuente de contenido multimedia encienda la TV y cambia el puerto de entrada automáticamente para que no tengas que buscar la TV para cambiar de Chromecast al reproductor Blu-ray.

Con Android 12, el control de encendido de la pantalla conectada por HDMI se alinea con control de encendido de la pantalla interna. Cuando un dispositivo de reproducción HDMI se activa, intenta para activar la TV conectada y convertirse en la fuente activa actual a través de HDMI CEC One Touch Play. Si el dispositivo se suspende mientras es la fuente activa en ese momento, intentará apagarse a la TV conectada.

Por lo general, la compatibilidad con HDMI-CEC es opcional. Sin embargo, la mayoría de los fabricantes adoptó el uso de HDMI-CEC y sus dispositivos funcionan con los de otras empresas. Cada fabricante implementa el estándar HDMI-CEC estándar de diferentes maneras, por lo que los dispositivos no siempre se entienden las funciones varían según el dispositivo. Debido a esta variación, los consumidores no pueden supón que dos productos que afirman admitir CEC son completamente compatibles.

La compatibilidad con HDMI-CEC 2.0 ayuda a mejorar la compatibilidad entre dispositivos HDMI si tanto el dispositivo de envío y recepción es compatible con esta versión del estándar.

Solución

Con la introducción del framework 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 y aliviar estos puntos débiles.

Al ofrecer HdmiControlService como parte de Android Android espera ofrecer lo siguiente:

  • Una implementación estándar de HDMI-CEC para todos los fabricantes, que reducir la incompatibilidad del dispositivo. Antes, los fabricantes tenían que desarrollar sus implementaciones propias de HDMI-CEC o usar soluciones de terceros.
  • Un servicio que ya está probado frente a varios dispositivos HDMI-CEC en el mercado. Android ha realizado una rigurosa investigación sobre la compatibilidad problemas encontrados entre los productos y recopilar consejos útiles de dispositivos implementadores con experiencia en la tecnología. El servicio CEC está diseñado para mantener un equilibrio saludable entre el estándar y las modificaciones a ese estándar de que funcione con los productos que las personas ya usan.

Diseño general

HdmiControlService está conectado con el resto del sistema de la siguiente manera: Framework de entrada de TV (TIF), servicio de audio y servicio de alimentación para implementar y varios atributos que especifica el estándar.

Consulta el siguiente diagrama para ver una representación del cambio de un CEC personalizado. con una implementación de la abstracción de hardware HDMI-CEC más simple (HAL).

Diagrama en el que se muestra cómo se implementó HDMI-CEC antes y después de Android 5.0

Figura 1: Servicio de control de HDMI reemplazo

Implementación

Consulta el siguiente diagrama para obtener una vista detallada del servicio de control de HDMI.

Imagen en la que se muestra cómo los detalles del servicio de control HDMI

Figura 2: Detalles del servicio de control de HDMI

Estos son los ingredientes clave para una implementación adecuada de HDMI-CEC de Android:

  • La clase de administrador HdmiControlManager proporciona apps con privilegios. con la API. Servicios del sistema, como el servicio de Administrador de entrada de TV y el servicio de audio pueden usar el servicio directamente.
  • El servicio está diseñado para permitir alojar más de un tipo de lógica dispositivo.
  • HDMI-CEC se conecta con el hardware a través de una capa de abstracción de hardware. (HAL) para simplificar las diferencias de manejo del protocolo y los mecanismos de señalización entre los dispositivos. La definición de HAL está disponible para fabricantes de dispositivos. para implementar la capa de HAL.

Nota: Los fabricantes de dispositivos deben agregar el siguiente línea a 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 HDMI o un dispositivo de origen HDMI, fabricantes de dispositivos deben establecer ro.hdmi.device_type en device.mk para que HdmiControlService funcione correctamente.

Para dispositivos de origen HDMI, como de transmisión libre (OTT) o decodificador (STB), configura lo siguiente:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Para receptores HDMI, como TVs con panel, configura lo siguiente:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Un controlador CEC propio proporcionado por el fabricante de un dispositivo no puede coexistir con HdmiControlService. Se debe inhabilitar o quitar. Común los requisitos para esto provienen de la necesidad de manejar aplicaciones con comandos de SQL sencillos. El controlador de comandos específico del fabricante se debe incorporar en el servicio extendiéndolo o modificándolo. Este trabajo es responsabilidad del dispositivo fabricante y no especificado por Android. Ten en cuenta que cualquier cambio realizado en el para comandos específicos del fabricante no deben interferir se manejen comandos estándar o el dispositivo no será compatible con Android.
  • El acceso al servicio HDMI-CEC está protegido con el nivel de protección. SignatureOrSystem Solo los componentes del sistema o las apps que se hayan colocado en /system/priv-app puede acceder al servicio. Esto es para proteger servicio contra el abuso por parte de apps con intención maliciosa.

Android admite el tipo TV/Display(0), Playback device(4), que puede emitir el comando de One Touch Play para activarse fuente y Audio System (5), que controla el modo de audio del sistema y ARC. En este momento, no se admiten otros tipos de dispositivos (sintonizador y grabadora).

HAL de HDMI-CEC

La API de HAL de HDMI-CEC permite que HdmiControlService use el recurso de hardware para enviar o recibir comandos HDMI-CEC, establecer la configuración necesaria, y (opcional) comunicarse con el microprocesador en la plataforma subyacente que tomará el control del CEC mientras el sistema Android esté en modo en espera.

Versión Funciones Archivos HAL
1.0 Configura los datos de la HAL (direcciones y funciones). Envía comandos de HDMI-CEC. Registra la devolución de llamada para recibir comandos HDMI-CEC y eventos de conexión en caliente. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 Presentación de los tipos HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Prueba

Las implementaciones de dispositivos HDMI-CEC se prueban y verifican a través de pruebas CTS de acuerdo con el Documentación del CTS de HDMI-CEC

HDMI-CEC 2.0

Los dispositivos Android de origen (reproducción) y receptor (panel de la TV) son compatibles con HDMI-CEC 2.0. HDMI-CEC 2.0 ofrece una mejor interoperabilidad entre dispositivos HDMI, mejoras en la transferencia de control remoto y pruebas de certificación más extensas. En general, las interacciones de HDMI-CEC 2.0 con otros dispositivos son más eficientes, lo que da como resultado menos tráfico HDMI-CEC e interacciones más rápidas.

Para que un dispositivo sea compatible con HDMI-CEC 2.0, la configuración del dispositivo y del usuario debe configurado 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 tanto en el tiempo de compilación (por parte de los OEM que usan RRO) como en el tiempo de ejecución. (de HdmiControlManager @SystemApi).

Ejemplos de configuración de HDMI-CEC:

Configuración Opción
Si HDMI-CEC está habilitado o inhabilitado. Habilitada
Inhabilitados
Alcance de los mensajes de control de encendido de HDMI-CEC enviados por un dispositivo de reproducción. Solo a la TV
En el sistema de audio y TV
Anunciar
Ninguno

Las apps pueden consultar las opciones permitidas y disponibles actualmente para cada parámetro de configuración durante el tiempo de ejecución.