Lo standard HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) consente a più prodotti di consumo multimediali di comunicare e scambiare informazioni tra loro. HDMI-CEC supporta molte funzionalità, come il passthrough del telecomando e il controllo dell'audio di sistema, ma una delle più apprezzate è One Touch Play. One Touch Play consente a un dispositivo di origine multimediale di accendere la TV e di cambiare automaticamente la porta di ingresso, quindi non devi cercare il telecomando della TV per passare da Chromecast al lettore Blu-ray.
Con Android 12, il controllo dell'alimentazione del display collegato tramite HDMI è in linea con il controllo dell'alimentazione del display interno. Quando un dispositivo di riproduzione HDMI si attiva, tenta di riattivare la TV connessa e diventare la fonte attiva corrente tramite la riproduzione one-touch HDMI CEC. Se il dispositivo entra in modalità sospensione mentre è l'origine attiva corrente, tenta di spegnere la TV connessa.
Il supporto della tecnologia HDMI-CEC è generalmente facoltativo. Tuttavia, la maggior parte dei produttori ha adottato HDMI-CEC in modo che i propri dispositivi funzionino con quelli di altre aziende. Ogni produttore implementa lo standard HDMI-CEC in modi diversi, quindi i dispositivi non sempre si comprendono e le funzionalità supportate variano a seconda del dispositivo. A causa di questa variazione, i consumatori non possono pensare con sicurezza che due prodotti che rivendicano il supporto CEC siano completamente compatibili.
Il supporto di HDMI-CEC 2.0 contribuisce a migliorare la compatibilità tra i dispositivi HDMI se sia il dispositivo di invio sia quello di ricezione supportano questa versione dello standard.
Soluzione
Con l'introduzione di Android TV Input Framework (TIF), HDMI-CEC riunisce tutti i dispositivi connessi e riduce al minimo i problemi di compatibilità.
Android ha creato un servizio di sistema chiamato HdmiControlService
per risolvere questi problemi.
Offrendo HdmiControlService
come parte dell'ecosistema Android, Android spera di fornire:
- Un'implementazione standard di HDMI-CEC per tutti i produttori, che ridurrà l'incompatibilità dei dispositivi. In precedenza, i produttori dovevano sviluppare le proprie implementazioni di HDMI-CEC o utilizzare soluzioni di terze parti.
- Un servizio ben testato su numerosi dispositivi HDMI-CEC già sul mercato. Android ha condotto ricerche rigorose sui problemi di compatibilità rilevati tra i prodotti e raccolto consigli utili da parte di implementatori di dispositivi esperti della tecnologia. Il servizio CEC è progettato per mantenere un equilibrio sano tra lo standard e le relative modifiche in modo che funzioni con i prodotti già in uso.
Design generale
HdmiControlService
è connesso al resto del sistema, come TIF (TV Input Framework), il servizio audio e il servizio di alimentazione, per implementare le varie funzionalità specificate dallo standard.
Consulta il seguente diagramma per una rappresentazione del passaggio da un controller CEC personalizzato a un'implementazione del più semplice HAL (HAL).
![Diagramma che mostra come è stato implementato HDMI-CEC prima e dopo Android 5.0](https://source.android.google.cn/static/docs/devices/tv/images/HDMI_Control_Service.png?authuser=2&hl=it)
Figura 1. Sostituzione del servizio di controllo HDMI
Implementazione
Consulta il seguente diagramma per una visualizzazione dettagliata del servizio di controllo HDMI.
![Immagine che mostra i dettagli del servizio Controllo HDMI](https://source.android.google.cn/static/docs/devices/tv/images/HDMI_Control_Service_Flow.png?authuser=2&hl=it)
Figura 2. Dettagli del servizio di controllo HDMI
Di seguito sono riportati gli ingredienti chiave per un'implementazione corretta di HDMI-CEC su Android:
- Un'app di gestione
HdmiControlManager
fornisce le app con privilegi con l'API. I servizi di sistema come il servizio TV Input Manager e il servizio Audio possono utilizzare il servizio direttamente. - Il servizio è progettato per consentire l'hosting di più di un tipo di dispositivo logico.
- HDMI-CEC è collegato all'hardware tramite un livello di astrazione hardware (HAL) per semplificare la gestione delle differenze del protocollo e dei meccanismi di segnalazione tra i dispositivi. I produttori di dispositivi possono usare la definizione HAL per implementare il livello HAL.
Nota: i produttori di dispositivi devono aggiungere la seguente riga a PRODUCT_COPY_FILES
in device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
A seconda che il dispositivo sia un dispositivo di destinazione HDMI o una sorgente HDMI,
i produttori di dispositivi devono impostare ro.hdmi.device_type
in
device.mk
affinché HdmiControlService
funzioni correttamente.
Per i dispositivi sorgente HDMI, ad esempio i dispositivi over-the-top (OTT) o decoder (STB), imposta:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Per i dispositivi di destinazione HDMI, come le TV a pannello, imposta:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Un controller CEC proprietario fornito dal produttore del dispositivo non può coesistere
con
HdmiControlService
. Deve essere disattivata o rimossa. I requisiti comuni derivano dalla necessità di gestire comandi specifici del produttore. Il gestore di comandi specifico del produttore deve essere incorporato nel servizio estendendolo/modificandolo. Questo compito è lasciato al produttore del dispositivo e non è specificato da Android. Tieni presente che qualsiasi modifica apportata al servizio per i comandi specifici del produttore non deve interferire con il modo in cui vengono gestiti i comandi standard, altrimenti il dispositivo non sarà compatibile con Android. - L'accesso al servizio HDMI-CEC è protetto con il livello di protezione
SignatureOrSystem
. Solo i componenti di sistema o le app inserite in/system/priv-app
possono accedere al servizio. allo scopo di proteggere il servizio da comportamenti illeciti da parte di app con intento dannoso.
Android supporta il tipo TV/Display(0)
, Playback
device(4)
che può emettere il comando di riproduzione con un solo tocco per diventare la fonte attiva e Audio System (5)
che gestisce la modalità audio di sistema e ARC.
Al momento non sono supportati altri tipi di dispositivi (tuner e registratori).
HAL HDMI-CEC
L'API HDMI-CEC HAL consente a HdmiControlService
di utilizzare la risorsa hardware per inviare/ricevere comandi HDMI-CEC, configurare le impostazioni necessarie e, facoltativamente, comunicare con il microprocessore nella piattaforma sottostante che assumerà il controllo CEC mentre il sistema Android è in modalità standby.
Versione | Funzionalità | File HAL |
---|---|---|
1.0 | Configura i dati HAL (indirizzi, elementi). Invia comandi HDMI-CEC. Registra il callback per ricevere i comandi HDMI-CEC e gli eventi hotplug. | IHdmiCec.hal IHdmiCecCallback.hal |
1,1 | Introduzione ai tipi HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Test
Le implementazioni HDMI-CEC dei dispositivi vengono testate e verificate tramite i test CTS in base alla documentazione CTS HDMI-CEC.
HDMI-CEC 2.0
I dispositivi Android sorgente (riproduzione) e di destinazione (pannello TV) supportano HDMI-CEC 2.0. HDMI-CEC 2.0 offre una migliore interoperabilità tra dispositivi HDMI, miglioramenti al Remote Control Passthrough e test di certificazione più completi. In generale, le interazioni HDMI-CEC 2.0 con altri dispositivi sono più efficienti, quindi si ottiene un volume inferiore di traffico HDMI-CEC e interazioni più rapide.
Affinché un dispositivo supporti HDMI-CEC 2.0, la configurazione del dispositivo e dell'utente deve essere impostata sull'utilizzo di HDMI-CEC 2.0. L'implementazione dell'HAL deve anche segnalare il supporto di HDMI-CEC 2.0 nelle chiamate a IHdmiCec#getCecVersion
.
Configurazione CEC
Il comportamento HDMI-CEC può essere configurato sia in fase di compilazione (dagli OEM che utilizzano RRO) sia in fase di esecuzione
(da HdmiControlManager
@SystemApi).
Esempi di impostazioni HDMI-CEC:
Impostazione | Opzione |
---|---|
Indica se la tecnologia HDMI-CEC è attivata o disattivata. | Abilitato Disabilitato |
Ambito dei messaggi relativi al controllo alimentazione HDMI-CEC inviati da un dispositivo di riproduzione. | Solo alla TV Alla TV e al sistema audio Trasmetti Nessuno |
Per ogni impostazione attualmente disponibile, le opzioni consentite possono essere sottoposte a query dalle app in fase di esecuzione.