HDMI-CEC-Steuerungsdienst

Die High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) ermöglicht es Multimedia-Verbraucherprodukten, Informationen miteinander auszutauschen. HDMI-CEC unterstützt viele Funktionen, z. B. Remote Control Passthrough und Audiosteuerung des Systems, aber eines der beliebtesten ist One Touch Play. Mit One Touch Play kann ein Mediengerät den Fernseher einschalten und den Eingangsport automatisch umschaltet, damit du nicht nach dem Fernseher suchen musst von Chromecast zu Blu-Ray-Player wechseln.

Bei Android 12 entspricht die Ein-/Aus-Taste des HDMI-Displays ein-/ausschalten. Wenn ein HDMI-Wiedergabegerät aktiviert wird, wird versucht, um den verbundenen Fernseher zu aktivieren und über die HDMI-CEC-Funktion „One Touch Play“ zur aktuellen aktiven Quelle zu werden. Wenn das Gerät in den Ruhemodus wechselt, während es die aktuelle aktive Quelle ist, wird versucht, das Gerät auszuschalten. den internetfähigen Fernseher.

In der Regel ist die Unterstützung von HDMI-CEC optional. Die meisten Hersteller nutzen jedoch HDMI-CEC. damit ihre Geräte mit den Geräten anderer Unternehmen funktionieren. Jeder Hersteller implementiert HDMI-CEC auf unterschiedliche Weise standardisiert. Die Geräte verstehen sich daher nicht immer unterscheiden sich je nach Gerät. Aufgrund dieser Abweichung können Verbraucher gehen wir davon aus, dass zwei Produkte, die CEC-Support unterstützen, vollständig kompatibel sind.

Die Unterstützung von HDMI-CEC 2.0 verbessert die Kompatibilität zwischen HDMI-Geräten, wenn sowohl die senden und empfangen, unterstützen diese Standardversion des Standards.

Lösung

Mit der Einführung des Android TV Input Framework (TIF) verbindet alle verbundenen Geräte miteinander und minimiert Kompatibilitätsprobleme. Android hat einen Systemdienst namens HdmiControlService erstellt, diese Probleme zu lösen.

Indem wir HdmiControlService als Teil des Android- möchte Android Folgendes bieten:

  • Eine Standardimplementierung von HDMI-CEC für alle Hersteller, die die Inkompatibilität von Geräten zu reduzieren. Früher mussten Hersteller ihre eigene Implementierungen von HDMI-CEC verwenden oder Drittanbieterlösungen nutzen.
  • Ein Dienst, der sich bereits mit zahlreichen HDMI-CEC-Geräten bewährt hat auf dem Markt. Android hat intensive Forschung zur Kompatibilität durchgeführt Probleme bei den Produkten erkannt und nützliche Tipps vom Gerät eingeholt werden die mit der Technologie vertraut sind. Der CEC-Dienst ist darauf ausgelegt, ein gesundes Gleichgewicht zwischen Standard und Änderungen daran zu haben, dass es mit Produkten funktioniert, die Menschen bereits verwenden.

Design allgemein

HdmiControlService ist mit dem Rest des Systems verbunden, z. B. TV Input Framework (TIF), Audiodienst und Power Service zur Implementierung der verschiedene Funktionen, die der Standard vorgibt.

Das folgende Diagramm zeigt eine Darstellung des Wechsels von einer benutzerdefinierten CEC. Controller auf eine Implementierung der einfacheren HDMI-CEC-Hardwareabstraktion. Layer (HAL).

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

Abbildung 1: HDMI-Steuerungsdienst Ersatz

Implementierung

Das folgende Diagramm enthält eine detaillierte Ansicht des HDMI-Steuerdienstes.

Bild, das die Details zum Dienst „HDMI Control“ zeigt

Abbildung 2: Details zum HDMI-Steuerungsdienst

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

  • Die Administratorklasse HdmiControlManager stellt privilegierte Apps bereit mit der API. Systemdienste wie TV Input Manager und Audiodienst den Dienst direkt nutzen können.
  • Der Dienst ist darauf ausgelegt, mehr als einen Typ logischer .
  • HDMI-CEC ist über eine Hardwareabstraktionsschicht mit der Hardware verbunden (HAL) verwendet, um die Verarbeitung von Unterschieden zwischen Protokoll- und Signalisierungsmechanismen zu vereinfachen. zwischen den Geräten. Die HAL-Definition ist für Gerätehersteller verfügbar zur Implementierung der HAL-Schicht.

Hinweis: Gerätehersteller sollten den Parameter Folgende Zeile in device.mk in PRODUCT_COPY_FILES ein.

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

Je nachdem, ob es sich um ein HDMI-Senkengerät oder ein HDMI-Quellgerät handelt, Gerätehersteller müssen ro.hdmi.device_type festlegen in device.mk, damit HdmiControlService richtig funktioniert.

Für HDMI-Quellgeräte wie OTT- oder Set-Top-Box-Geräte:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Für HDMI-Senkengeräte wie Panel-Fernseher:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Ein vom Gerätehersteller bereitgestellter proprietärer CEC-Controller kann nicht gleichzeitig verwendet werden mit HdmiControlService. Sie muss deaktiviert oder entfernt werden. Häufig Anforderungen dafür aus der Notwendigkeit, herstellerspezifische Anforderungen . Der herstellerspezifische Befehls-Handler sollte in durch Erweitern/Ändern. Diese Arbeit bleibt dem Gerät überlassen Hersteller und nicht durch Android angegeben. Beachten Sie, dass alle Änderungen in der Dienst für herstellerspezifische Befehle darf die Art und Weise, Standardbefehle verarbeitet werden oder das Gerät nicht mit Android kompatibel ist.
  • Der Zugriff auf den HDMI-CEC-Dienst wird durch das Schutzniveau geschützt SignatureOrSystem Nur Systemkomponenten oder die Apps, /system/priv-app kann auf den Dienst zugreifen. Dies dient dem Schutz der um Missbrauch durch Apps mit böswilliger Absicht zu verhindern.

Android unterstützt den Typ TV/Display(0), Playback device(4), bei dem der Befehl „One Touch Play“ verwendet werden kann, um die aktive und Audio System (5), die den Audiomodus des Systems und ARC verarbeiten. Andere Gerätetypen (Tuner und Rekorder) werden derzeit nicht unterstützt.

HDMI-CEC-HAL

Mit der HDMI-CEC HAL API kann HdmiControlService die Hardwareressource zum Senden/Empfangen von HDMI-CEC-Befehlen, Konfigurieren der erforderlichen Einstellungen und (optional) mit dem Mikroprozessor in der zugrunde liegenden Plattform kommunizieren, übernimmt die CEC-Steuerung, während sich das Android-System im Stand-by-Modus befindet.

Version Funktionen HAL-Dateien
1.0 Konfigurieren Sie HAL-Daten (Adressen, Funktionen). HDMI-CEC-Befehle senden. Registrieren Sie den Callback, um HDMI-CEC-Befehle und Hotplug-Ereignisse zu erhalten. IHdmiCec.hal
IHdmiCecCallback.hal
1,1 Vorstellung von HDMI-CEC 2.0-Typen @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Testen

HDMI-CEC-Implementierungen von Geräten werden gemäß den <ph type="x-smartling-placeholder"></ph> HDMI-CEC-CTS-Dokumentation

HDMI-CEC 2.0

Quellgeräte (Wiedergabe) und Senken (TV-Steuerfeld) von Android unterstützen HDMI-CEC 2.0. HDMI-CEC 2.0 bietet eine bessere Interoperabilität zwischen HDMI-Geräten, Verbesserungen am Remote Control Passthrough und umfassendere Zertifizierungstests Im Allgemeinen sind HDMI-CEC 2.0-Interaktionen mit anderen Geräten effizienter. Dies führt zu weniger HDMI-CEC-Datenverkehr und schnelleren Interaktionen.

Damit ein Gerät HDMI-CEC 2.0 unterstützt, müssen das Gerät und die Nutzerkonfiguration so konfiguriert sein: ist auf HDMI-CEC 2.0 eingestellt. Die HAL-Implementierung muss auch die Unterstützung von HDMI-CEC 2.0 melden. bei Aufrufen von IHdmiCec#getCecVersion.

CEC-Konfiguration

Das HDMI-CEC-Verhalten kann sowohl zum Build-Zeitpunkt (durch OEMs, die RROs verwenden) als auch zur Laufzeit konfiguriert werden. (von HdmiControlManager @SystemApi).

Beispiele für HDMI-CEC-Einstellungen:

Einstellung Option
Gibt an, ob HDMI-CEC aktiviert oder deaktiviert ist. Aktiviert
Deaktiviert
Bereich der HDMI-CEC-Nachrichten zur Stromversorgung, die von einem Wiedergabegerät gesendet werden. Nur aufs TV
An TV-Gerät und Audiosystem
Nachricht an alle
Keine

Jede derzeit verfügbare und zulässige Einstellung kann von Apps während der Laufzeit abgefragt werden.