HDMI-CEC-Steuerungsdienst

Der HDMI-CEC-Standard (High-Definition Multimedia Interface Consumer Electronics Control) ermöglicht Multimedia-Verbraucherprodukten die Kommunikation und den Austausch von Informationen untereinander. HDMI-CEC unterstützt viele Funktionen, wie z. B. 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 Eingangsanschluss automatisch umschalten, sodass Sie nicht nach der TV-Fernbedienung suchen müssen, um von Ihrem Chromecast zum Blu-ray-Player zu wechseln.

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

Die Unterstützung von HDMI-CEC ist grundsätzlich optional. Allerdings haben die meisten Hersteller HDMI-CEC eingeführt, sodass 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 Unterschiede können Verbraucher nicht mit Sicherheit davon ausgehen, dass zwei Produkte, die CEC-Unterstützung versprechen, vollständig kompatibel sind.

Die Unterstützung von 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) vereint HDMI-CEC alle angeschlossenen Geräte und minimiert Kompatibilitätsprobleme. Android hat einen Systemdienst namens HdmiControlService erstellt, um diese Probleme zu lindern.

Durch das Angebot HdmiControlService als Teil des Android-Ökosystems möchte Android Folgendes bieten:

  • Eine Standardimplementierung von HDMI-CEC für alle Hersteller, die die Geräteinkompatibilität verringert. Bisher mussten Hersteller eigene Implementierungen von HDMI-CEC entwickeln oder auf Lösungen von Drittanbietern zurückgreifen.
  • Ein Dienst, der mit zahlreichen bereits auf dem Markt erhältlichen HDMI-CEC-Geräten gut getestet wurde. Android hat gründliche Untersuchungen zu Kompatibilitätsproblemen bei den Produkten durchgeführt und nützliche Ratschläge von Geräteimplementierern eingeholt, die Erfahrung mit der Technologie haben. Der CEC-Service ist darauf ausgelegt, ein gesundes Gleichgewicht zwischen dem Standard und Änderungen an diesem Standard zu wahren, sodass 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 Funktionen zu implementieren, die der Standard spezifiziert.

Im folgenden Diagramm finden Sie eine Darstellung des Wechsels von einem benutzerdefinierten CEC-Controller zu einer Implementierung der einfacheren HDMI-CEC-Hardwareabstraktionsschicht (HAL).

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

Abbildung 1. Austausch des HDMI-Steuerungsdienstes

Implementierung

Eine detaillierte Ansicht des HDMI-Steuerungsdienstes finden Sie im folgenden Diagramm.

Bild, das die Details des HDMI-Steuerungsdienstes zeigt

Abbildung 2. Details 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 nutzen.
  • Der Dienst ist so konzipiert, dass er das Hosten mehrerer logischer Gerätetypen ermöglicht.
  • HDMI-CEC ist über eine Hardware-Abstraktionsschicht (HAL) mit der Hardware verbunden, um den Umgang mit Unterschieden des Protokolls und der Signalmechanismen zwischen den Geräten zu vereinfachen. Die HAL-Definition steht Geräteherstellern zur Implementierung der HAL-Schicht zur Verfügung.

Hinweis : Gerätehersteller sollten die folgende Zeile in PRODUCT_COPY_FILES in device.mk hinzufügen.

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml

Abhängig davon, ob es sich bei Ihrem Gerät um ein HDMI-Senkengerät oder ein HDMI-Quellgerät handelt, müssen Gerätehersteller ro.hdmi.device_type in device.mk festlegen, damit HdmiControlService ordnungsgemäß funktioniert.

Stellen Sie für HDMI-Quellgeräte wie Over-the-Top-Geräte (OTT) oder Set-Top-Box-Geräte (STB) 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. Häufige Anforderungen hierfür ergeben sich aus der Notwendigkeit, herstellerspezifische Befehle zu verarbeiten. Der herstellerspezifische Befehlshandler sollte durch Erweiterung/Änderung in den Dienst eingebunden werden. Diese Arbeit bleibt dem Gerätehersteller überlassen und wird nicht von Android vorgegeben. Beachten Sie, dass Änderungen am Dienst für herstellerspezifische Befehle die Art und Weise, wie Standardbefehle verarbeitet werden, nicht beeinträchtigen dürfen, da das Gerät sonst nicht mit 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 abgelegten Apps können auf den Dienst zugreifen. Dies dient dazu, den Dienst vor Missbrauch durch Apps mit böswilliger Absicht zu schützen.

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

HDMI-CEC HAL

Mit der HDMI-CEC-HAL-API kann der HdmiControlService die Hardware-Ressource nutzen, um HDMI-CEC-Befehle zu senden/empfangen, notwendige Einstellungen zu konfigurieren und (optional) mit dem Mikroprozessor in der zugrunde liegenden Plattform zu kommunizieren, der die CEC-Steuerung übernimmt, während das Android Das System befindet sich im Standby-Modus.

Ausführung Merkmale HAL-Dateien
1,0 Konfigurieren Sie HAL-Daten (Adressen, Funktionen). Senden Sie HDMI-CEC-Befehle. Registrieren Sie einen Rückruf, um HDMI-CEC-Befehle und Hotplug-Ereignisse zu empfangen. 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-Quell- (Wiedergabe) und -Senkengeräte (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 und schnelleren Interaktionen führt.

Damit ein Gerät HDMI-CEC 2.0 unterstützt, müssen die Geräte- und 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 melden.

CEC-Konfiguration

Das HDMI-CEC-Verhalten kann sowohl zur Build-Zeit (durch OEMs, die RROs verwenden) als auch zur Laufzeit (durch 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
Übertragen
Keiner

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