Usługa sterowania HDMI-CEC

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).

Schemat pokazujący wdrożenie HDMI-CEC przed Androidem 5.0 i później

Rysunek 1. Usługa sterowania HDMI zamiennik

Implementacja

Poniższy schemat przedstawia szczegółowy widok usługi sterowania HDMI.

Obraz przedstawiający szczegóły usługi Sterowanie HDMI

Rysunek 2. Szczegóły 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.