HDMI-CEC-Steuerungsdienst

Der Standard High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) ermöglicht es Multimedia-Endverbraucherprodukten, miteinander zu kommunizieren und Informationen auszutauschen. HDMI-CEC unterstützt viele Funktionen wie Remote Control Passthrough und System Audio Control, aber eine der beliebtesten ist One Touch Play. Mit One Touch Play kann ein Medienquellgerät den Fernseher einschalten und seinen Eingangsport automatisch umschalten, sodass Sie nicht nach der TV-Fernbedienung suchen müssen, um von Ihrem Chromecast auf den Blu-ray-Player umzuschalten.

Mit Android 12 stimmt die Leistungssteuerung des über HDMI verbundenen Displays mit der Leistungssteuerung des internen Displays überein. Wenn ein HDMI-Wiedergabegerät aktiviert wird, versucht es, das angeschlossene Fernsehgerät zu aktivieren und über HDMI CEC One Touch Play zur aktuellen aktiven Quelle zu werden. Wenn das Gerät in den Ruhezustand wechselt, während es die derzeit aktive Quelle ist, versucht es, das angeschlossene Fernsehgerät auszuschalten.

Die Unterstützung von HDMI-CEC ist im Allgemeinen optional. Die meisten Hersteller haben jedoch HDMI-CEC eingeführt, damit ihre Geräte mit den Geräten anderer Unternehmen funktionieren. Jeder Hersteller implementiert den HDMI-CEC-Standard auf unterschiedliche Weise, sodass sich die Geräte nicht immer gegenseitig verstehen und die unterstützten Funktionen von Gerät zu Gerät unterschiedlich sind. Aufgrund dieser Abweichung können Verbraucher nicht davon ausgehen, dass zwei Produkte, die CEC-Unterstützung beanspruchen, vollständig kompatibel sind.

Die Unterstützung für HDMI-CEC 2.0 trägt zur Verbesserung der Kompatibilität zwischen HDMI-Geräten bei, wenn sowohl das sendende als auch das empfangende Gerät diese Version des Standards unterstützen.

Lösung

Mit der Einführung des Android TV Input Framework (TIF) bringt HDMI-CEC alle angeschlossenen Geräte zusammen und minimiert Kompatibilitätsprobleme. Android hat einen Systemdienst namens HdmiControlService , um diese Schwachstellen zu lindern.

Durch das Angebot von HdmiControlService als Teil des Android-Ökosystems erhofft sich Android Folgendes:

  • Eine Standardimplementierung von HDMI-CEC für alle Hersteller, wodurch die Geräteinkompatibilität verringert wird. Bisher mussten Hersteller ihre eigenen Implementierungen von HDMI-CEC entwickeln oder Lösungen von Drittanbietern verwenden.
  • Ein Dienst, der sich mit zahlreichen bereits auf dem Markt befindlichen HDMI-CEC-Geräten bewährt hat. Android hat strenge Untersuchungen zu Kompatibilitätsproblemen durchgeführt, die bei den Produkten festgestellt wurden, und nützliche Ratschläge von Geräteimplementierern mit Erfahrung in der Technologie eingeholt. Der CEC-Service ist darauf ausgelegt, ein gesundes Gleichgewicht zwischen dem Standard und Änderungen an diesem Standard zu halten, damit er mit den Produkten funktioniert, die bereits verwendet werden.

Gesamtkonzept

HdmiControlService ist mit dem Rest des Systems wie TV Input Framework (TIF), Audiodienst und Power-Dienst verbunden, um die verschiedenen vom Standard spezifizierten Funktionen zu implementieren.

Das folgende Diagramm zeigt eine Darstellung des Wechsels von einem benutzerdefinierten CEC-Controller zu einer Implementierung der einfacheren HDMI-CEC-Hardware-Abstraktionsschicht (HAL).

Diagramm, das zeigt, wie HDMI-CEC vor und nach Android 5.0 implementiert wurde

Abbildung 1. Austausch des HDMI-Steuerungsdienstes

Implementierung

Im folgenden Diagramm finden Sie eine detaillierte Ansicht des HDMI-Steuerungsdienstes.

Bild, das die Details des HDMI-Steuerungsdienstes zeigt

Abbildung 2. Einzelheiten zum HDMI-Steuerungsdienst

Hier sind die wichtigsten Zutaten für eine ordnungsgemäße Android HDMI-CEC-Implementierung:

  • Eine Managerklasse HdmiControlManager stellt privilegierten Apps die API zur Verfügung. Systemdienste wie der TV Input Manager-Dienst und der Audiodienst können den Dienst direkt verwenden.
  • Der Dienst wurde entwickelt, um das Hosten von mehr als einem Typ von logischen Geräten zu ermöglichen.
  • HDMI-CEC ist über eine Hardware-Abstraktionsschicht (HAL) mit der Hardware verbunden, um den Umgang mit Unterschieden des Protokolls und der Signalisierungsmechanismen zwischen den Geräten zu vereinfachen. Die HAL-Definition steht Geräteherstellern zur Verfügung, um die HAL-Schicht zu implementieren.

Hinweis : Gerätehersteller sollten die folgende Zeile zu 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

Abhängig davon, ob Ihr Gerät ein HDMI-Senkengerät oder ein HDMI-Quellgerät ist, müssen Gerätehersteller ro.hdmi.device_type in device.mk festlegen, damit HdmiControlService funktioniert.

Stellen Sie für HDMI-Quellgeräte wie Over the Top (OTT)- oder Set-Top-Box (STB)-Geräte Folgendes ein:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Stellen Sie für HDMI-Senkengeräte wie Panel-TVs Folgendes ein:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Ein vom Gerätehersteller bereitgestellter proprietärer CEC-Controller kann nicht mit HdmiControlService koexistieren. Es muss deaktiviert oder entfernt werden. Übliche Anforderungen hierfür ergeben sich aus der Notwendigkeit, herstellerspezifische Befehle zu handhaben. Der herstellerspezifische Command Handler sollte durch Erweiterung/Änderung in den Dienst eingebunden werden. Diese Arbeit wird dem Gerätehersteller überlassen und nicht von Android vorgegeben. Beachten Sie, dass Änderungen im Dienst für herstellerspezifische Befehle nicht die Art und Weise beeinträchtigen dürfen, wie Standardbefehle verarbeitet werden, da das Gerät sonst nicht Android-kompatibel ist.
  • Der Zugriff auf den HDMI-CEC-Dienst wird mit der Schutzstufe SignatureOrSystem geschützt. Nur Systemkomponenten oder die in /system/priv-app platzierten Apps können auf den Dienst zugreifen. Dies soll den Dienst vor Missbrauch durch Apps mit böswilliger Absicht schützen.

Android unterstützt Typ TV/Display(0) , Playback device(4) , das den One-Touch-Wiedergabebefehl ausgeben kann, um zur aktiven Quelle zu werden, und Audiosystem Audio System (5) , das den Systemaudiomodus und ARC verwaltet. Andere Gerätetypen (Tuner und Recorder) werden derzeit nicht unterstützt.

HDMI-CEC HAL

Die HDMI-CEC-HAL-API ermöglicht dem HdmiControlService die Nutzung der Hardware-Ressource zum Senden/Empfangen von HDMI-CEC-Befehlen, zum Konfigurieren der erforderlichen Einstellungen und (optional) zum Kommunizieren mit dem Mikroprozessor in der zugrunde liegenden Plattform, der die CEC-Steuerung übernimmt, während Android System befindet sich im Standby-Modus.

Ausführung Merkmale HAL-Dateien
1.0 Konfigurieren Sie HAL-Daten (Adressen, Merkmale). Senden Sie HDMI-CEC-Befehle. Registrieren Sie den Rückruf, um HDMI-CEC-Befehle und Hotplug-Ereignisse zu erhalten. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 Einführung von HDMI-CEC 2.0-Typen @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Testen

HDMI-CEC-Implementierungen von Geräten werden über CTS-Tests gemäß der HDMI-CEC-CTS-Dokumentation getestet und verifiziert.

HDMI-CEC 2.0

Android-Geräte als Quelle (Wiedergabe) und Senke (TV-Panel) unterstützen HDMI-CEC 2.0. HDMI-CEC 2.0 bietet eine bessere Interoperabilität zwischen HDMI-Geräten, Verbesserungen beim Remote Control Passthrough und umfangreichere Zertifizierungstests. Im Allgemeinen sind HDMI-CEC 2.0-Interaktionen mit anderen Geräten effizienter, was zu weniger HDMI-CEC-Verkehr sowie schnelleren Interaktionen führt.

Damit ein Gerät HDMI-CEC 2.0 unterstützt, müssen das Gerät und die Benutzerkonfiguration auf die Verwendung von HDMI-CEC 2.0 eingestellt sein. Die HAL-Implementierung muss auch Unterstützung für HDMI-CEC 2.0 in Aufrufen an IHdmiCec#getCecVersion .

CEC-Konfiguration

Das HDMI-CEC-Verhalten kann sowohl zur Erstellungszeit (von OEMs mit RROs) als auch zur Laufzeit (von HdmiControlManager @SystemApi) konfiguriert werden.

Beispiele für HDMI-CEC-Einstellungen:

Einstellung Möglichkeit
Ob HDMI-CEC aktiviert oder deaktiviert ist. Ermöglicht
Deaktiviert
Umfang der von einem Wiedergabegerät gesendeten HDMI-CEC-Leistungssteuerungsmeldungen. Nur zum Fernsehen
Zu TV und Audiosystem
Übertragung
Keiner

Für jede Einstellung können aktuell verfügbare und erlaubte Optionen von Apps zur Laufzeit abgefragt werden.