"High-Definition Multimedia Interface" - Controllo dell'elettronica di consumo (HDMI-CEC) consente a prodotti di consumo multimediali di comunicare e scambiarsi informazioni. 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'accensione e lo spegnimento del display interno. Quando un dispositivo di riproduzione HDMI si attiva, prova a tentare per riattivare la TV connessa e diventare la fonte attiva corrente tramite la riproduzione one-touch HDMI CEC. Se il dispositivo va in modalità di sospensione mentre è l'attuale fonte attiva, prova a spegnersi sulla TV connessa a internet.
Il supporto della tecnologia HDMI-CEC è in genere facoltativo. Tuttavia, la maggior parte dei produttori ha adottato HDMI-CEC in modo che i loro dispositivi funzionino con quelli di altre aziende. Ogni produttore implementa la tecnologia HDMI-CEC standard in modi diversi, quindi i dispositivi non sempre si comprendono e non sono sempre supportati e le funzionalità variano in base al dispositivo. A causa di questa variazione, i consumatori non possono dare per scontato che due prodotti che richiedono il supporto CEC siano completamente compatibili.
Il supporto per HDMI-CEC 2.0 migliora la compatibilità tra i dispositivi HDMI sia l'invio e la ricezione del dispositivo 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
mitigare questi punti dolenti.
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 sulla compatibilità problemi rilevati tra i prodotti e la raccolta di consigli utili dal dispositivo implementatori esperti nella tecnologia. Il servizio CEC è progettato per mantenere un salutare equilibrio tra lo standard e le relative modifiche, in modo che che funzioni con i prodotti che le persone già usano.
Design complessivo
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 dello switch di una CEC personalizzata a un'implementazione dell'astrazione hardware HDMI-CEC più semplice standard (HAL).
Implementazione
Fai riferimento al diagramma seguente per una vista dettagliata del servizio di controllo HDMI.
Ecco gli elementi principali per una corretta implementazione HDMI-CEC per Android:
- Un gestore
HdmiControlManager
offre app con privilegi con l'API. Servizi di sistema come il servizio TV Input Manager e il servizio audio possono usare direttamente il servizio. - Il servizio è progettato per consentire l'hosting di più di un tipo di dispositivo.
- HDMI-CEC è collegato all'hardware tramite uno strato di astrazione hardware (HAL) per semplificare la gestione delle differenze del protocollo e dei meccanismi di segnalazione tra i dispositivi. La definizione dell'HAL è disponibile per i produttori di dispositivi da utilizzare per implementare lo strato 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 sorgente HDMI,
i produttori di dispositivi devono impostare ro.hdmi.device_type
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 sink 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 disattivato o rimosso. Comuni i requisiti provengono dalla necessità di gestire le specifiche tramite comandi SQL. Il gestore di comandi specifico del produttore deve essere incorporato il servizio estendendolo/modificandolo. Questo lavoro viene lasciato al dispositivo produttore 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 inseriti/system/priv-app
può accedere al servizio. Questo serve a proteggere da parte di app con intento dannoso.
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, funzionalità). Invia comandi HDMI-CEC. Registra il callback per ricevere comandi HDMI-CEC ed 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 test CTS in base alle 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 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, generando meno traffico HDMI-CEC e interazioni più veloci.
Affinché un dispositivo supporti la tecnologia 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 per 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 al sistema audio Trasmetti Nessuno |
Per ogni impostazione attualmente disponibile e consentita, è possibile eseguire query in base alle app in fase di esecuzione.