Service de contrôle HDMI-CEC

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).

Schéma illustrant la mise en œuvre de HDMI-CEC avant et après Android 5.0

Figure 1 : Service de contrôle HDMI remplacement

Implémentation

Consultez le schéma suivant pour obtenir une vue détaillée du service de contrôle HDMI.

Image montrant les détails 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 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.