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 to odtwarzanie 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 wdraża standard HDMI-CEC standardem na różne sposoby, dzięki czemu urządzenia nie zawsze się rozumieją i obsługują funkcje różnią się w zależności od urządzenia. Ze względu na te różnice konsumenci nie mogą bezpiecznie Zakładamy, że 2 usługi, które twierdzą, że obsługują CEC, są w pełni zgodne.
Obsługa standardu HDMI-CEC 2.0 zwiększa zgodność między urządzeniami HDMI, jeśli urządzenia wysyłające i odbierające 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ą.
Android utworzył usługę systemową o nazwie HdmiControlService
, aby:
pożegnaj się z tymi problemami.
Oferując usługę HdmiControlService
w ramach Androida
ma nadzieję, że Android zapewni:
- Standardowa implementacja HDMI-CEC dla wszystkich producentów, i zmniejszać zgodność 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. Android prowadzi rygorystyczne badania nad kompatybilnością problemy znalezione wśród produktów i zbieranie przydatnych porad z urządzenia. ma doświadczenie w dziedzinie technologii. Usługa CEC została zaprojektowana tak, aby zachowuje równowagę między standardem a jego modyfikacją, sprawdza się w przypadku produktów, 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).
Implementacja
Poniższy schemat przedstawia szczegółowy widok usługi sterowania HDMI.
Oto najważniejsze elementy prawidłowego wdrożenia HDMI-CEC w Androidzie:
- Klasa menedżera
HdmiControlManager
udostępnia aplikacje z podwyższonymi uprawnieniami za pomocą interfejsu API. Usługi systemowe, takie jak usługa Menedżer wejść telewizyjnych 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.
- HDMI-CEC jest połączone ze sprzętem przez warstwę abstrakcji sprzętowej (HAL) w celu uproszczenia obsługi różnic w protokołach i mechanizmach sygnalizacyjnych 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 dodawać atrybut
ten wiersz w: PRODUCT_COPY_FILES
w: 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 urządzenie jest urządzeniem obsługującym zlew HDMI czy źródłem HDMI,
producenci urządzeń muszą skonfigurować ro.hdmi.device_type
w
device.mk
, aby HdmiControlService
działał prawidłowo.
W przypadku urządzeń źródłowych HDMI, takich jak urządzenia Over-The-Top (OTT) lub dekoder (STB), ustaw:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
W przypadku urządzeń z ujściem HDMI, np. telewizorów panelowych, 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
. Należy ją wyłączyć lub usunąć. Powszechny określone przez producenta wymagania wynikają z konieczności poleceń. Moduł obsługi poleceń specyficzny dla producenta należy umieścić w przez rozszerzenie/zmodyfikowanie usługi. Te zadania są pozostawiane urządzeniu producenta i nieokreślonego przez system Android. Należy pamiętać, że wszelkie zmiany wprowadzone w usługa na potrzeby poleceń producenta nie może zakłócać działania obsługiwane są standardowe polecenia. 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
Tylko komponenty systemu lub aplikacje umieszczone w/system/priv-app
ma dostęp do usługi. Ma to na celu ochronę przed nadużyciami powodowanymi przez aplikacje o złośliwym charakterze.
Android obsługuje typy TV/Display(0)
, Playback
device(4)
, które mogą aktywować polecenie One Touch Play za pomocą polecenia
source oraz Audio System (5)
, który obsługuje tryb systemowego trybu dźwięku i ARC.
Inne typy urządzeń (tuner i Dyktafon) nie są obecnie obsługiwane.
HDMI-CEC HAL
Interfejs HDMI-CEC HAL API umożliwia HdmiControlService
korzystanie z interfejsu
zasób sprzętowy do wysyłania/odbierania poleceń HDMI-CEC, konfigurowania niezbędnych ustawień
i (opcjonalnie) komunikować się z mikroprocesorem na platformie, która
przejmie sterowanie CEC, gdy system Android jest w trybie 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 | Przedstawienie 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 ujście (panele telewizyjne) na Androidzie obsługują standard HDMI-CEC 2.0. HDMI-CEC 2.0 zapewnia lepszą interoperacyjność między urządzeniami HDMI, ulepszyliśmy przekazywanie zdalnego sterowania i bardziej rozbudowane testy certyfikacyjne. Ogólnie rzecz biorąc, interakcje HDMI-CEC 2.0 z innymi urządzeniami są bardziej wydajne, co przekłada się na mniejszą ilość ruchu HDMI-CEC i 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ż raportować obsługę HDMI-CEC 2.0
w wywołaniach z numerem 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 komunikatów dotyczących sterowania zasilaniem HDMI-CEC wysyłanych przez urządzenie odtwarzające. | Tylko do telewizora Do telewizora i systemu audio Transmisja Nikt nie korzysta |
Aplikacje mogą wysyłać zapytania dotyczące każdego ustawienia obecnie dostępnego i dozwolonego opcji.