Interface multimédia haute définition pour le contrôle de l'électronique grand public (HDMI-CEC) permet aux produits grand public de communiquer et échanger des informations entre eux. Le HDMI-CEC est compatible avec de nombreuses fonctionnalités, Passthrough de la télécommande et contrôle audio du système, mais l'un des plus populaires est One Touch Play. 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é HDMI est aligné avec 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. Cependant, la plupart des fabricants ont adopté le HDMI-CEC pour que leurs appareils fonctionnent avec ceux d'autres entreprises. Chaque fabricant implémente le 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 cet écart, les consommateurs ne peuvent pas partent du principe que deux produits prétendant la prise en charge du CEC sont entièrement compatibles.
La compatibilité HDMI-CEC 2.0 contribue à améliorer 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 le lancement du framework d'entrée TIF (Android TV Input Framework), le HDMI-CEC
rassemble tous les appareils connectés et limite les problèmes de compatibilité.
Android a créé un service système appelé HdmiControlService
pour
à atténuer ces difficultés.
En proposant HdmiControlService
dans le cadre d'Android
écosystème, Android espère offrir:
- Une implémentation standard du HDMI-CEC pour tous les fabricants, qui réduire l'incompatibilité des appareils. Auparavant, les fabricants devaient développer vos propres implémentations de HDMI-CEC ou utilisent des solutions tierces.
- Un service qui a déjà été testé avec soin par rapport à de nombreux appareils HDMI-CEC 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 garder un bon équilibre entre la norme et les modifications apportées à cette norme afin qu'il fonctionne avec les produits que les gens utilisent déjà.
Aspect général
HdmiControlService
est connecté au reste du système, comme
TV Input Framework (TIF), le service audio et le service Power pour implémenter
diverses caractéristiques spécifiées par la norme.
Le schéma suivant illustre le basculement à partir d'un CEC personnalisé. du contrôleur à une mise en œuvre de l'abstraction matérielle HDMI-CEC, plus simple. (HAL).
Implémentation
Consultez le schéma suivant pour obtenir une vue détaillée du 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 des applications privilégiées avec l'API. Services système tels que le service TV Input Manager et le service audio peuvent utiliser le service directement. - Ce 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 de protocole et de mécanismes de signalement. entre les appareils. La définition HAL est disponible pour les fabricants d'appareils. pour implémenter la couche HAL.
Remarque: Les fabricants d'appareils doivent ajouter le paramètre
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 équipés d'un récepteur HDMI, tels que les téléviseurs à l'écran, définissez ce qui suit:
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
. Elle doit être désactivée ou supprimée. Commun à cet égard proviennent de la nécessité de gérer les exigences commandes. Le gestionnaire de commandes spécifique au fabricant doit être incorporé dans le service en l'étendant/en le modifiant. Ce travail est laissé à l'appareil fabricant et non spécifié par Android. Notez que toute modification apportée au des commandes spécifiques du fabricant ne doit pas interférer avec la manière 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/system/priv-app
peut accéder au service. Cela permet de protéger contre les utilisations abusives d'applications malveillantes.
Android prend en charge le type TV/Display(0)
, Playback
device(4)
, qui peut émettre la commande One Touch Play pour devenir l'élément actif
source et Audio System (5)
, qui gère le mode audio du 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 plug-in Hotplug. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | Présenter les 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 sources (lecture) et récepteurs (écran de téléviseur) sont compatibles avec HDMI-CEC 2.0. Le HDMI-CEC 2.0 offre une meilleure interopérabilité entre les périphériques HDMI, Améliorations apportées au contournement de la télécommande et tests de certification plus approfondis. En général, les interactions HDMI-CEC 2.0 avec d’autres périphériques 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 CEC
Le comportement HDMI-CEC peut être configuré à la fois au moment de la compilation (par les OEM utilisant des RRO) et de l'environnement d'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. | Vers la télévision uniquement Vers le téléviseur et le système audio Diffuser Aucune |
Pour chaque paramètre actuellement disponible et les options autorisées peuvent être interrogées par les applications au moment de l'exécution.