Sterowanie elektronika użytkową interfejsu multimedialnego High-Definition Standard HDMI (HDMI-CEC) pozwala produktom multimedialnym komunikować się wymiany informacji między sobą. HDMI-CEC obsługuje wiele funkcji, takich jak zdalne sterowanie i sterowanie dźwiękiem systemu, ale jedną z najpopularniejszych jest funkcja odtwarzania jednym dotknięciem. Odtwarzanie jednym dotknięciem umożliwia urządzeniu źródłowemu włączenie telewizora oraz przełączaj port wejściowy automatycznie, więc nie musisz szukać telewizora. pilota, aby przełączyć się z Chromecasta na odtwarzacz Blu-ray.
W Androidzie 12 sterowanie zasilaniem wyświetlacza podłączonego przez HDMI odpowiada sterowania zasilaniem wewnętrznego wyświetlacza. Gdy urządzenie odtwarzające HDMI się wybudza, podejmuje próbę aby wybudzić podłączony telewizor i stać się bieżącym aktywnym źródłem przez HDMI CEC One Touch Play. Jeśli urządzenie przejdzie w tryb uśpienia, gdy jest bieżącym aktywnym źródłem, spróbuje się wyłączyć. urządzenia CTV.
Obsługa HDMI-CEC jest zasadniczo opcjonalna. Większość producentów korzysta jednak z HDMI-CEC. żeby ich urządzenia współpracowały z urządzeniami innych firm. Każdy producent implementuje standard HDMI-CEC w inny sposób, więc urządzenia nie zawsze się ze sobą komunikują, a obsługiwane funkcje różnią się w zależności od urządzenia. Z tego powodu konsumenci nie mogą zakładać, że dwa produkty, które obsługują CEC, są w pełni zgodne.
Obsługa HDMI-CEC 2.0 poprawia zgodność urządzeń HDMI, jeśli zarówno urządzenie wysyłające, jak i odbiorcze obsługują tę wersję standardu.
Rozwiązanie
Wraz z wprowadzeniem platformy wejściowej Android TV (TIF) platforma HDMI-CEC
łączy wszystkie połączone urządzenia i minimalizuje problemy ze zgodnością.
Aby rozwiązać ten problem, w Androidzie została utworzona usługa systemowa o nazwie HdmiControlService
.
Oferując HdmiControlService
w ramach ekosystemu Androida, firma Android chce zapewnić:
- Standardowa implementacja HDMI-CEC dla wszystkich producentów, zmniejszanie zgodności urządzeń. Wcześniej producenci musieli tworzyć własne własne implementacje HDMI-CEC lub korzystanie z rozwiązań innych firm.
- Usługa, która została dobrze przetestowana na wielu urządzeniach HDMI-CEC dostępnych na rynku. Zespół Androida przeprowadził dokładne badania dotyczące problemów ze zgodnością, które występują w różnych produktach, oraz zebrał przydatne porady od implementatorów urządzeń, którzy mają doświadczenie w tej technologii. Usługa CEC została zaprojektowana tak, aby zachować zdrową równowagę między standardem a modyfikacjami tego standardu, aby działała z produktami, których użytkownicy już używają.
Ogólny projekt
Urządzenie HdmiControlService
jest połączone z resztą systemu, np.
Platforma wejścia TV (TIF), usługa audio i usługa zasilania w celu wdrożenia
różne funkcje określone w normie.
Poniższy diagram przedstawia przejście z niestandardowej wersji CEC. do wdrożenia uproszczonej abstrakcji sprzętowej HDMI-CEC warstwa (HAL).

Rysunek 1. wymiana usługi sterowania HDMI,
Implementacja
Szczegółowy opis usługi sterowania HDMI znajdziesz na diagramie poniżej.

Rysunek 2. Szczegóły usługi sterowania HDMI
Oto najważniejsze elementy prawidłowej implementacji HDMI-CEC w Androidzie:
- Klasa menedżera
HdmiControlManager
udostępnia uprawnienia interfejsu API aplikacjom z przywilejami. Usługi systemowe, takie jak usługa Menedżer wejścia TV i usługa audio mogą korzystać z usługi bezpośrednio. - Usługa została zaprojektowana tak, aby umożliwić hostowanie więcej niż jednego typu urządzenia.
- Złącze HDMI-CEC jest połączone z sprzętem za pomocą warstwy abstrakcji sprzętowej (HAL), aby uprościć obsługę różnic w protokołach i mechanizmach sygnalizacji między urządzeniami. Definicja HAL jest dostępna dla producentów urządzeń który służy do implementacji warstwy HAL.
Uwaga: producenci urządzeń powinni dodać ten wiersz do pliku PRODUCT_COPY_FILES
w pliku device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
W zależności od tego, czy Twoje urządzenie jest urządzeniem z wyjściami HDMI, czy urządzeniem z wejściami HDMI, producenci urządzeń muszą ustawić ro.hdmi.device_type
w device.mk
, aby HdmiControlService
działało prawidłowo.
W przypadku urządzeń źródłowych HDMI, takich jak urządzenia OTT lub dekodery, ustaw:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
W przypadku urządzeń z wyjściem HDMI, takich jak telewizory panelowe, ustaw:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Zastrzeżony kontroler CEC udostępniony przez producenta urządzenia nie może współistnieć
dzięki
HdmiControlService
. Musisz go wyłączyć lub usunąć. Powszechny Wymogi związane z tym stosowaniem wiążą się z konkretnymi producentami, poleceń. Moduł obsługi poleceń specyficzny dla producenta należy umieścić w przez rozszerzenie/zmodyfikowanie usługi. To zadanie należy do producenta urządzenia, a nie do Androida. Pamiętaj, że wszelkie zmiany wprowadzone w usłudze dotyczące poleceń producenta nie mogą wpływać na sposób obsługi poleceń standardowych, ponieważ w przeciwnym razie urządzenie nie będzie zgodne z Androidem. - Dostęp do usługi HDMI-CEC jest chroniony za pomocą poziomu ochrony
SignatureOrSystem
. Dostęp do usługi mają tylko komponenty systemowe lub aplikacje umieszczone w/system/priv-app
. Ma to na celu ochronę usługi przed nadużyciami przez aplikacje o złośliwych zamiarach.
Android obsługuje typ TV/Display(0)
, Playback
device(4)
, który może wydać polecenie odtwarzania jednym dotknięciem, aby stać się aktywnym źródłem, oraz Audio System (5)
, który obsługuje tryb audio systemowy i ARC.
Inne typy urządzeń (Tuner i Recorder) nie są obecnie obsługiwane.
HDMI-CEC HAL
Interfejs API HAL HDMI-CEC umożliwia HdmiControlService
korzystanie z zasobu sprzętowego do wysyłania i odbierania poleceń HDMI-CEC, konfigurowania niezbędnych ustawień oraz (opcjonalnie) komunikowania się z mikroprocesorem na platformie docelowej, który przejmie kontrolę nad CEC, gdy system Android będzie w stanie gotowości.
Wersja | Funkcje | Pliki HAL |
---|---|---|
1,0 | Skonfiguruj dane HAL (adresy, funkcje). Wysyłanie poleceń HDMI-CEC. Zarejestruj wywołanie zwrotne, aby odbierać polecenia HDMI-CEC i zdarzenia Hotplug. | IHdmiCec.hal IHdmiCecCallback.hal |
1,1 | Wprowadzenie typów HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Testowanie
Implementacje urządzeń przez HDMI-CEC są testowane i weryfikowane za pomocą testów CTS według Dokumentacja HDMI-CEC CTS.
HDMI-CEC 2.0
Urządzenia źródłowe (odtwarzanie) i odbiorcze (panel telewizora) z Androidem obsługują standard HDMI-CEC 2.0. Standard HDMI-CEC 2.0 zapewnia lepszą współpracę między urządzeniami HDMI, ulepszenia w funkcjonowaniu funkcji przekierowania sterowania oraz bardziej rozbudowane testy certyfikacyjne. Ogólnie interakcje HDMI-CEC 2.0 z innymi urządzeniami są bardziej wydajne, co powoduje mniejszy ruch HDMI-CEC oraz szybsze interakcje.
Aby urządzenie obsługiwało HDMI-CEC 2.0, konfiguracja urządzenia i użytkownika muszą być
ustawiony na używanie HDMI-CEC 2.0. Implementacja HAL musi też zgłaszać obsługę HDMI-CEC 2.0 w wywołaniach do IHdmiCec#getCecVersion
.
Konfiguracja CEC
Działanie HDMI-CEC można skonfigurować zarówno w momencie kompilacji (przez OEM za pomocą RRO), jak i w czasie działania.
(autor: HdmiControlManager
, @SystemApi).
Przykłady ustawień HDMI-CEC:
Ustawienie | Option |
---|---|
Określa, czy HDMI-CEC jest włączone czy wyłączone. | Włączona Wyłączona |
Zakres wiadomości sterowania zasilaniem HDMI-CEC wysyłanych przez urządzenie do odtwarzania. | Tylko do telewizora Do telewizora i systemu audio Transmisja Brak |
Aplikacje mogą wysyłać zapytania dotyczące każdego ustawienia obecnie dostępnego i dozwolonego opcji.