La norme HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) permet aux produits multimédias grand public de communiquer et d'échanger des informations entre eux. Le HDMI-CEC est compatible avec de nombreuses fonctionnalités, telles que le passthrough de la télécommande et le contrôle audio du système, mais l'une des plus populaires est la lecture à une touche. One Touch Play permet à un périphérique multimédia d'allumer le téléviseur et bascule automatiquement le port d'entrée pour vous éviter d'avoir à rechercher le téléviseur. pour passer de votre Chromecast au lecteur Blu-ray.
Avec Android 12, le contrôle de l'alimentation de l'écran connecté par HDMI s'aligne sur le contrôle de l'alimentation de l'écran interne. Lorsqu'un appareil de lecture HDMI est réactivé, il tente pour activer le téléviseur connecté et devenir la source active actuelle via HDMI CEC One Touch Play. Si l'appareil se met en veille alors qu'il s'agit de la source active, il tente ensuite de s'éteindre la TV connectée.
La prise en charge du HDMI-CEC est généralement facultative. Toutefois, la plupart des fabricants ont adopté le HDMI-CEC pour que leurs appareils fonctionnent avec ceux d'autres entreprises. Chaque fabricant met en œuvre le protocole HDMI-CEC standard de différentes manières, de sorte que les appareils ne se comprennent pas toujours et ne prennent pas les fonctionnalités varient d'un appareil à l'autre. En raison de cette variance, les consommateurs ne peuvent pas supposer en toute sécurité que deux produits qui prétendent être compatibles avec le CEC sont complètement compatibles.
La compatibilité HDMI-CEC 2.0 améliore la compatibilité entre les appareils HDMI lorsque les les appareils d’envoi et de réception prennent en charge cette version de la norme.
Solution
Avec l'introduction du framework d'entrée Android TV (TIF), le HDMI-CEC rassemble tous les appareils connectés et minimise les problèmes de compatibilité.
Android a créé un service système appelé HdmiControlService
pour
à atténuer ces difficultés.
En proposant HdmiControlService
dans l'écosystème Android, Android espère fournir :
- Une implémentation standard du HDMI-CEC pour tous les fabricants, qui réduire l'incompatibilité des appareils. Auparavant, les fabricants devaient développer leurs propres implémentations du HDMI-CEC ou utiliser des solutions tierces.
- Un service testé sur de nombreux appareils HDMI-CEC déjà disponibles sur le marché. Android a mené des recherches rigoureuses sur la compatibilité problèmes détectés parmi les produits et collecte de conseils utiles sur l'appareil expérimentés dans la technologie. Le service CEC est conçu pour maintenir un équilibre sain entre la norme et les modifications apportées à cette norme afin qu'il fonctionne avec les produits que les utilisateurs utilisent déjà.
Aspect général
HdmiControlService
est connecté au reste du système, comme le TV Input Framework (TIF), le service audio et le service d'alimentation, pour implémenter les différentes fonctionnalités spécifiées par la norme.
Le schéma suivant illustre le passage d'un contrôleur CEC personnalisé à une implémentation de la couche d'abstraction matérielle (HAL) HDMI-CEC plus simple.

Figure 1 : Remplacement du service de contrôle HDMI
Implémentation
Consultez le schéma suivant pour obtenir une vue détaillée du service de contrôle HDMI.

Figure 2. Informations sur le service de contrôle HDMI
Voici les ingrédients clés d'une bonne implémentation HDMI-CEC d'Android:
- Une classe de gestionnaire
HdmiControlManager
fournit l'API aux applications privilégiées. Les services système tels que le service TV Input Manager et le service Audio peuvent utiliser le service directement. - Le service est conçu pour permettre l'hébergement de plusieurs types appareil.
- Le HDMI-CEC est connecté au matériel via une couche d'abstraction matérielle (HAL) pour simplifier la gestion des différences entre le protocole et les mécanismes de signalisation des appareils. La définition de la HAL est disponible pour les fabricants d'appareils afin de mettre en œuvre la couche HAL.
Remarque : Les fabricants d'appareils doivent ajouter la ligne suivante dans PRODUCT_COPY_FILES
dans device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
Selon que votre appareil est
un récepteur HDMI ou un périphérique source HDMI,
les fabricants d'appareils doivent définir ro.hdmi.device_type
dans
device.mk
pour HdmiControlService
fonctionne correctement.
Pour les appareils sources HDMI, tels que les appareils de service de distribution par contournement (OTT, over-the-top) ou de boîtier décodeur, définissez les paramètres suivants:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Pour les appareils de réception HDMI, comme les téléviseurs à écran plat, définissez les paramètres suivants :
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Un contrôleur CEC propriétaire fourni par le fabricant de l'appareil ne peut pas coexister avec
HdmiControlService
. Il doit être désactivé ou supprimé. Les exigences courantes à cet égard découlent de la nécessité de gérer les commandes spécifiques au fabricant. Le gestionnaire de commandes spécifique au fabricant doit être intégré au service en l'étendant/en le modifiant. Cette tâche est laissée au fabricant de l'appareil et n'est pas spécifiée par Android. Notez que toute modification apportée au service pour les commandes spécifiques au fabricant ne doit pas interférer avec la manière dont les commandes standards sont gérées, sinon l'appareil ne sera pas compatible avec Android. - L'accès au service HDMI-CEC est protégé par le niveau de protection
SignatureOrSystem
Seuls les composants système ou les applications placées dans/system/priv-app
peuvent accéder au service. Cela permet de protéger contre les utilisations abusives d'applications malveillantes.
Android est compatible avec les types TV/Display(0)
et Playback
device(4)
, qui peuvent émettre la commande de lecture à un bouton pour devenir la source active, et Audio System (5)
, qui gère le mode audio système et ARC.
Les autres types d'appareils (Tuner et Enregistreur) ne sont actuellement pas pris en charge.
HAL HDMI-CEC
L'API HAL HDMI-CEC permet au HdmiControlService
d'utiliser la
ressource matérielle pour envoyer/recevoir des commandes HDMI-CEC, configurer les paramètres nécessaires
et (éventuellement) communiquer avec le microprocesseur de la plate-forme sous-jacente qui
prendra le contrôle du CEC lorsque le système Android est en mode veille.
Version | Fonctionnalités | Fichiers HAL |
---|---|---|
1.0 | Configurer les données HAL (adresses, caractéristiques) Envoyer des commandes HDMI-CEC Enregistrez un rappel pour recevoir les commandes HDMI-CEC et les événements de hotplug. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | Présentation des types HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Tests
Les implémentations HDMI-CEC des appareils sont testées et validées via des tests CTS conformément à la <ph type="x-smartling-placeholder"></ph> Documentation CTS HDMI-CEC
HDMI-CEC 2.0
Les appareils Android source (lecture) et puits (écran de télévision) sont compatibles avec HDMI-CEC 2.0. HDMI-CEC 2.0 offre une meilleure interopérabilité entre les appareils HDMI, des améliorations du passthrough de la télécommande et des tests de certification plus approfondis. En général, les interactions HDMI-CEC 2.0 avec d'autres appareils sont plus efficaces, ce qui réduit le trafic HDMI-CEC et accélère les interactions.
Pour qu'un appareil soit compatible avec HDMI-CEC 2.0, sa configuration et celle de l'utilisateur doivent être
configuré pour utiliser HDMI-CEC 2.0. L'implémentation de la HAL doit également indiquer la compatibilité avec HDMI-CEC 2.0.
dans les appels à IHdmiCec#getCecVersion
.
Configuration du CEC
Le comportement HDMI-CEC peut être configuré au moment de la compilation (par les OEM à l'aide de RRO) et au moment de l'exécution (par HdmiControlManager
@SystemApi).
Exemples de paramètres HDMI-CEC:
Paramètre | Option |
---|---|
Indique si le HDMI-CEC est activé ou désactivé. | Activée Désactivé |
Champ d'application des messages de contrôle de l'alimentation HDMI-CEC envoyés par un appareil de lecture. | À la télévision uniquement À la télévision et au système audio Diffusion Aucun |
Pour chaque paramètre actuellement disponible, les options autorisées peuvent être interrogées par les applications au moment de l'exécution.