Lo standard HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) consente ai prodotti di consumo multimediali di comunicare e scambiarsi informazioni tra loro. HDMI-CEC supporta molte funzionalità, ad esempio Remote Control Passthrough e System Audio Control, ma uno dei modelli è One Touch Play. One Touch Play consente a un dispositivo di origine multimediale di accendere la TV e a cambiare la porta di ingresso automaticamente, così non dovrai cercare la TV telecomando 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 riattiva, tenta di riattivare la TV collegata e di diventare la sorgente attiva corrente tramite HDMI CEC One Touch Play. Se il dispositivo entra in modalità sospensione mentre è l'origine attiva corrente, tenta di spegnere la TV connessa.
Il supporto di 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, pertanto i dispositivi non sempre si riconoscono e le funzionalità supportate variano da un dispositivo all'altro. A causa di questa variabilità, i consumatori non possono assumere con certezza che due prodotti che dichiarano di supportare il CEC siano completamente compatibili.
Il supporto per HDMI-CEC 2.0 migliora la compatibilità tra i dispositivi HDMI sia l'invio e la 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
nell'ambito di Android
Android, Android spera di fornire:
- Un'implementazione standard di HDMI-CEC per tutti i produttori, che ridurre l'incompatibilità dei dispositivi. In precedenza, i produttori dovevano sviluppare proprie implementazioni di HDMI-CEC o utilizzare soluzioni di terze parti.
- Un servizio già testato su numerosi dispositivi HDMI-CEC nel 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, ad esempio
TV Input Framework (TIF), servizio audio e servizio Power per implementare
le varie caratteristiche specificate dallo standard.
Consulta il seguente diagramma per una rappresentazione del passaggio da un controller CEC personalizzato a un'implementazione del livello di astrazione hardware (HAL) HDMI-CEC più semplice.

Figura 1. Servizio di controllo HDMI sostituzione
Implementazione
Consulta il seguente diagramma per una visualizzazione dettagliata del servizio di controllo HDMI.

Figura 2. Dettagli di HDMI Control Service
Di seguito sono riportati gli ingredienti chiave per un'implementazione corretta di HDMI-CEC su Android:
- Un gestore
HdmiControlManager
offre 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. La definizione HAL è disponibile per i produttori di dispositivi da utilizzare per implementare il livello HAL.
Nota: i produttori di dispositivi devono aggiungere
seguendo la riga in PRODUCT_COPY_FILES
tra 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 sink HDMI o un dispositivo di origine HDMI,
i produttori di dispositivi devono impostare ro.hdmi.device_type
device.mk
affinché HdmiControlService
funzioni correttamente.
Per i dispositivi di origine HDMI, come i dispositivi over-the-top (OTT) o i 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. Comuni i requisiti provengono dalla necessità di gestire le specifiche tramite comandi SQL. Il gestore dei 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 per i comandi specifici del produttore non devono interferire con il modo Vengono gestiti i comandi standard o 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. Questo serve a proteggere il servizio da comportamenti illeciti da parte di app con intenti dannosi.
Android supporta il tipo TV/Display(0)
, Playback
device(4)
, che può emettere il comando One Touch Play per diventare attivo
sorgente e Audio System (5)
, che gestisce la modalità audio del sistema e ARC.
Altri tipi di dispositivi (Tuner e Registratore) non sono attualmente supportati.
HAL HDMI-CEC
L'API HDMI-CEC HAL consente a HdmiControlService
di utilizzare i
risorse hardware per inviare/ricevere comandi HDMI-CEC, configurare le impostazioni necessarie
e (facoltativamente) comunicare con il microprocessore nella piattaforma sottostante
prenderà 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 | Illustrare i tipi di 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 source (riproduzione) e sink (pannello TV) supportano HDMI-CEC 2.0. HDMI-CEC 2.0 offre una migliore interoperabilità tra i dispositivi HDMI, miglioramenti al passthrough del telecomando e test di certificazione più approfonditi. In generale, le interazioni HDMI-CEC 2.0 con altri dispositivi sono più efficienti, generando meno traffico HDMI-CEC e interazioni più veloci.
Affinché un dispositivo supporti HDMI-CEC 2.0, è necessario che la configurazione del dispositivo e dell'utente sia
impostata per utilizzare 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 al momento della build (dagli OEM che utilizzano RRO) sia al runtime
(di 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 all'impianto audio Trasmissione Nessuno |
Per ogni impostazione attualmente disponibile, le opzioni consentite possono essere sottoposte a query dalle app in fase di esecuzione.