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)
alle verbundenen Geräte zusammenführt und Kompatibilitätsprobleme minimiert.
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).
Implementierung
Das folgende Diagramm enthält eine detaillierte Ansicht des HDMI-Steuerdienstes.
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 können den Dienst direkt nutzen. - 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.