
Platforma Android TV Input Framework (TIF) upraszcza dostarczanie treści na żywo do Android TV. Android TIF zapewnia producentom standardowy interfejs API do tworzenia modułów wejściowych do sterowania Android TV i umożliwia wyszukiwanie programów telewizyjnych na żywo oraz rekomendacje za pośrednictwem metadanych publikowanych przez wejście TV.
Ramy te nie mają na celu wdrożenia standardów telewizyjnych ani wymagań regionalnych, ale ułatwiają producentom urządzeń spełnienie regionalnych standardów nadawania telewizji cyfrowej bez ponownego wdrożenia. Dokumentacja w tej sekcji może być również przydatna dla zewnętrznych twórców aplikacji, którzy chcą tworzyć niestandardowe wejścia TV.
składniki
Implementacja platformy Android TV Input Framework zawiera menedżera TV Input. TIF współpracuje z aplikacją telewizyjną, aplikacją systemową, której nie można zastąpić aplikacją innej firmy, aby uzyskać dostęp do kanałów wbudowanych i tunerów IP. Aplikacja TV komunikuje się z modułami TV Input dostarczonymi przez producenta urządzenia lub inne podmioty za pośrednictwem programu TV Input Manager.
Struktura wejścia telewizyjnego składa się z:
- Dostawca TV (
com.android.providers.tv.TvProvider
): baza danych kanałów, programów i powiązanych uprawnień - Aplikacja TV (
com.android.tv.TvActivity
): aplikacja obsługująca interakcję użytkownika - TV Input Manager (
android.media.tv.TvInputManager
): umożliwia komunikację wejść TV z aplikacją telewizyjną - Wejście TV: aplikacja reprezentująca fizyczne lub wirtualne tunery i porty wejściowe
- TV Input HAL (moduł
tv_input
): definicja sprzętu, która umożliwia systemowym wejściam TV dostęp do sprzętu specyficznego dla telewizora po zaimplementowaniu - Kontrola rodzicielska: technologia umożliwiająca blokowanie kanałów i programów
- HDMI-CEC: technologia umożliwiająca zdalne sterowanie różnymi urządzeniami przez HDMI
- Tuner Framework: platforma dla wejścia TV z wbudowanym tunerem
- MediaCas: ramy dostępu warunkowego
- Tuner Resource Manager: usługa do zarządzania zasobami sprzętowymi dla wejścia TV, MediaCas i wbudowanego tunera
Te elementy zostały szczegółowo omówione poniżej. Poniższy diagram zawiera szczegółowy widok architektury Android TV Input Framework.

Pływ
Oto jak ćwiczona jest architektura:
- Użytkownik widzi i wchodzi w interakcję z aplikacją telewizyjną, aplikacją systemową, której nie można zastąpić aplikacją innej firmy.
- Aplikacja TV wyświetla zawartość AV z wejścia TV.
- Aplikacja TV nie może komunikować się bezpośrednio z wejściami TV. Menedżer wejść TV identyfikuje stan wejść TV dla aplikacji TV. Więcej informacji na temat tych ograniczeń można znaleźć w Menedżerze wejścia TV poniżej.
Uprawnienia
- Tylko wejścia
signatureOrSystem
TV i aplikacja TV mają pełny dostęp do bazy danych TV Provider i są w stanie odbierać KeyEvents. - Tylko systemowe wejścia TV mają dostęp do warstwy HAL wejścia TV za pośrednictwem usługi TV Input Manager. Dostęp do wejść TV można uzyskać jeden-do-jednego za pośrednictwem sesji TV Input Manager.
- Wejścia telewizyjne innych firm mają zablokowany pakietowo dostęp do bazy danych dostawcy telewizji i mogą odczytywać/zapisywać tylko pasujące wiersze pakietów.
- Wejścia telewizyjne innych firm mogą wyświetlać własną zawartość lub zawartość z wejść telewizyjnych producenta urządzenia, takich jak HDMI1. Nie mogą wyświetlać treści z wejść TV nieprzejściowych, takich jak wbudowany tuner lub tuner IPTV.
- Uprawnienie
TV_INPUT_HARDWARE
dla sprzętowej aplikacji TV Input sygnalizuje usłudze TV Input Manager, aby podczas rozruchu powiadomiła usługę TV Input, aby wywołała usługę TV Input Manager i dodała jej wejścia TV. To uprawnienie umożliwia sprzętowej aplikacji wejścia telewizyjnego obsługę wielu wejść telewizyjnych na usługę wejścia telewizyjnego, a także dynamiczne dodawanie i usuwanie obsługiwanych wejść telewizyjnych.
Dostawca telewizji
Baza danych dostawcy telewizji przechowuje kanały i programy z wejść telewizyjnych. Dostawca TV publikuje również i zarządza powiązanymi uprawnieniami, tak aby wejścia telewizyjne mogły widzieć tylko własne nagrania. Na przykład określone wejście TV może widzieć tylko dostarczone przez siebie kanały i programy i nie ma dostępu do żadnych innych kanałów i programów wejść TV.
Dostawca TV mapuje wewnętrznie „gatunek nadawania” na „gatunek kanoniczny”. Wejścia TV odpowiadają za wypełnianie „gatunku nadawania” wartością z bazowego standardu nadawania, a pole „gatunek kanoniczny” zostanie automatycznie wypełnione poprawnym powiązanym gatunkiem z android.provider.TvContract.Genres
. Na przykład w przypadku standardu transmisji ATSC A/65 i programu z gatunkiem 0x25 (co oznacza „Sport”), wejście TV wypełni „gatunek transmisji” ciągiem „Sport”, a dostawca TV wypełni pole „gatunek kanoniczny” zmapowana wartość android.provider.TvContract.Genres.SPORTS
.
Zobacz poniższy diagram, aby zobaczyć szczegółowy widok dostawcy telewizji.

Tylko aplikacje z uprzywilejowanej partycji systemowej mogą odczytywać całą bazę danych dostawcy telewizji.
Wejścia telewizji przelotowej nie przechowują kanałów i programów.
Oprócz standardowych pól dla kanałów i programów, baza danych dostawcy TV oferuje również pole typu BLOB, COLUMN_INTERNAL_PROVIDER_DATA
, w każdej tabeli, której wejścia TV mogą używać do przechowywania dowolnych danych. Te dane BLOB mogą zawierać informacje niestandardowe, takie jak częstotliwość skojarzonego tunera i mogą być dostarczone w buforze protokołu lub w innej formie. Pole z możliwością wyszukiwania jest dostępne, aby niektóre kanały były niedostępne podczas wyszukiwania (np. aby spełnić wymagania dotyczące ochrony treści obowiązujące w danym kraju).
Przykłady pól bazy danych
Dostawca TV obsługuje uporządkowane dane w tabelach kanałów ( android.provider.TvContract.Channels
) i programów ( android.provider.TvContract.Programs
). Te tabele są wypełniane i dostępne dla wejść TV i aplikacji systemowych, takich jak aplikacja TV. Tabele te mają cztery typy pól:
- Wyświetlanie: pola wyświetlania zawierają informacje, które aplikacje mogą chcieć udostępnić użytkownikowi, takie jak nazwa kanału (
COLUMN_DISPLAY_NAME
), numer (COLUMN_DISPLAY_NUMBER
) lub tytuł oglądanego programu. - Metadane: istnieją trzy pola do identyfikacji treści, zgodnie z odpowiednimi standardami, takie jak identyfikator strumienia transportowego kanału (
COLUMN_TRANSPORT_STREAM_ID
), oryginalny identyfikator sieci (COLUMN_ORIGINAL_NETWORK_ID
) i identyfikator usługi (COLUMN_SERVICE_ID
). - Dane wewnętrzne : pola przeznaczone do niestandardowego użycia wejść TV.
Niektóre pola, takie jakCOLUMN_INTERNAL_PROVIDER_DATA
, to konfigurowalne pola BLOB, w których wejście TV może przechowywać dowolne metadane dotyczące ich kanału lub programu. - Flaga: pola flag określają, czy kanał powinien być ograniczony do wyszukiwania, przeglądania lub oglądania. Można to ustawić tylko na poziomie kanału. Wszystkie programy zależą od ustawienia na kanale.
-
COLUMN_SEARCHABLE
: Ograniczenie wyszukiwania z niektórych kanałów może być wymagane w niektórych regionach.COLUMN_SEARCHABLE = 0
oznacza, że kanał nie powinien być widoczny w wynikach wyszukiwania. -
COLUMN_BROWSABLE
: Widoczne tylko dla aplikacji systemowych. Ograniczanie przeglądania kanału przez aplikacje.COLUMN_BROWSABLE = 0
oznacza, że kanał nie powinien znajdować się na liście kanałów. -
COLUMN_LOCKED
: Widoczne tylko dla aplikacji systemowych. Ograniczanie oglądania kanału przez nieprawidłowe konta bez wpisywania kodu PIN.COLUMN_LOCKED = 1
oznacza, że kanał powinien być chroniony przez kontrolę rodzicielską.
Aby uzyskać bardziej wyczerpującą listę pól, zobacz android/frameworks/base/media/java/android/media/tv/TvContract.java
Uprawnienia i kontrola dostępu
Wszystkie pola są widoczne dla każdego, kto ma dostęp do odpowiedniego wiersza. Żadne pola nie są bezpośrednio dostępne dla użytkowników; widzą tylko to, co jest na powierzchni aplikacji TV, aplikacji systemowych lub wejść TV.
- Każdy wiersz ma
PACKAGE_NAME
, pakiet (aplikację), który jest właścicielem tego wiersza, sprawdzany w zapytaniu, wstawieniu, aktualizacji przez TvProvider.java. Wejście TV może mieć dostęp tylko do informacji, które napisało i jest oddzielone od informacji dostarczanych przez inne wejścia TV. - Uprawnienia do odczytu i zapisu za pośrednictwem AndroidManifest.xml (wymaga zgody użytkownika) w celu określenia dostępnych kanałów.
- Tylko aplikacje
signatureOrSystem
mogą uzyskać uprawnieniaACCESS_ALL_EPG_DATA
dostępu do całej bazy danych.
Menedżer wejścia telewizyjnego
TV Input Manager zapewnia centralny systemowy interfejs API dla całego systemu Android TV Input Framework. Zarządza interakcją między aplikacjami a wejściami telewizyjnymi i zapewnia funkcję kontroli rodzicielskiej. Sesje TV Input Manager muszą być tworzone jeden-do-jednego za pomocą wejść TV. TV Input Manager umożliwia dostęp do zainstalowanych wejść TV, dzięki czemu aplikacje mogą:
- Wyświetl listę wejść TV i sprawdź ich stan
- Twórz sesje i zarządzaj słuchaczami
W przypadku sesji wejście telewizyjne może być dostrojone przez aplikację telewizyjną tylko do identyfikatorów URI dodanych do bazy danych dostawcy telewizji, z wyjątkiem przelotowych wejść telewizyjnych, które można dostroić za pomocą TvContract.buildChannelUriForPassthroughInput()
. Wejście TV może również mieć ustawioną głośność. Wejścia telewizyjne dostarczone i podpisane przez producenta urządzenia (aplikacje do obsługi sygnatur) lub inne aplikacje zainstalowane na partycji systemowej będą miały dostęp do całej bazy danych dostawcy telewizji. Dostęp ten można wykorzystać do tworzenia aplikacji do przeglądania i wyszukiwania wszystkich dostępnych kanałów i programów telewizyjnych.
Aplikacja może utworzyć i zarejestrować TvInputCallback
za pomocą android.media.tv.TvInputManager
w celu wywołania zwrotnego po zmianie stanu wejścia telewizyjnego lub po dodaniu lub usunięciu wejścia telewizyjnego. Na przykład aplikacja telewizyjna może reagować, gdy wejście telewizyjne jest odłączone, wyświetlając je jako odłączone i uniemożliwiając jego wybór.
TV Input Manager ogranicza komunikację między aplikacją telewizyjną a wejściami telewizyjnymi. Standardowy interfejs programu TV Input Manager i TV Input umożliwia wielu producentom urządzeń tworzenie własnych aplikacji telewizyjnych, jednocześnie pomagając wszystkim wejściom telewizyjnym innych firm działać we wszystkich aplikacjach telewizyjnych.
Wejścia telewizyjne
Wejścia telewizyjne to aplikacje na Androida w tym sensie, że mają plik AndroidManifest.xml i są instalowane (przez Play, wstępnie zainstalowane lub ładowane z boku). Android TV obsługuje wstępnie zainstalowane aplikacje systemowe, aplikacje podpisane przez producenta urządzenia oraz wejścia telewizyjne innych firm.
Niektóre wejścia, takie jak wejście HDMI lub wejście wbudowanego tunera, mogą być dostarczone tylko przez producenta, ponieważ łączą się bezpośrednio z podstawowym sprzętem. Inne, takie jak IPTV, zmiana miejsca i zewnętrzne STB, mogą być dostarczane przez strony trzecie jako pakiety APK w sklepie Google Play. Po pobraniu i zainstalowaniu nowe wejście można wybrać w aplikacji TV.
Przykład wprowadzania przekazującego

W tym przykładzie wejście telewizyjne dostarczone przez producenta urządzenia jest zaufane i ma pełny dostęp do dostawcy telewizji. Jako przelotowe wejście telewizyjne nie rejestruje żadnych kanałów ani programów u dostawcy telewizji. Aby uzyskać identyfikator URI używany do odwoływania się do danych wejściowych przekazywania, użyj metody narzędzia android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
. Aplikacja TV komunikuje się z TV Input Manager, aby uzyskać dostęp do wejścia HDMI TV.
Przykład wbudowanego tunera

W tym przykładzie wejście TV wbudowanego tunera dostarczone przez producenta urządzenia jest zaufane i ma pełny dostęp do dostawcy telewizji.
Przykład danych wejściowych innej firmy

W tym przykładzie zewnętrzne wejście telewizyjne STB jest dostarczane przez inną firmę. Ponieważ to wejście TV nie może bezpośrednio uzyskać dostępu do sygnału wideo HDMI, musi przejść przez Menedżera wejścia TV i użyć wejścia HDMI TV dostarczonego przez producenta urządzenia.
Za pomocą programu TV Input Manager zewnętrzne wejście telewizyjne STB może komunikować się z wejściem telewizora HDMI i prosić je o wyświetlanie wideo na HDMI1. Dzięki temu wejście TV STB może sterować telewizorem, podczas gdy dostarczone przez producenta wejście HDMI TV renderuje wideo.
Przykład obrazu w obrazie (PIP)

Powyższy schemat pokazuje, w jaki sposób przyciski pilota zdalnego sterowania są przekazywane do określonego wejścia telewizora w celu wyświetlania obrazu w obrazie (PIP). Te naciśnięcia przycisków są interpretowane przez sterownik sprzętu dostarczony przez producenta urządzenia, konwertując skanody sprzętu na kody klawiszy systemu Android i przekazując je do standardowego potoku wejściowego systemu Android InputReader
i InputDispatcher
jako funkcji KeyEvents . Te z kolei wyzwalają zdarzenia w aplikacji telewizyjnej, jeśli jest w centrum uwagi.
Tylko systemowe wejścia telewizyjne mogą otrzymywać InputEvents
i tylko wtedy, gdy mają uprawnienia systemowe RECEIVE_INPUT_EVENT
. Wejście TV jest odpowiedzialne za określenie, które zdarzenia InputEvent mają zostać wykorzystane i powinno umożliwić aplikacji TV obsługę kluczy, których nie potrzebuje.
Aplikacja telewizyjna jest odpowiedzialna za sprawdzenie, które systemowe wejście TV jest aktywne, czyli wybrane przez użytkownika, oraz za rozróżnienie przychodzących KeyEvents
i przekierowanie ich do właściwej sesji Menedżera wejść TV, wywołując metodę dispatchInputEvent()
, aby przekazać zdarzenie do powiązanego wejścia TV .
Przykład wejścia MHEG-5
Poniższy diagram przedstawia bardziej szczegółowy widok sposobu kierowania KeyEvents
przez Android TIF.

Przedstawia działanie aplikacji z czerwonym przyciskiem, powszechnej w Europie, która umożliwia użytkownikom dostęp do interaktywnych aplikacji na telewizorach. Aplikacja może być dostarczana przez ten strumień transportowy. Kliknięcie przycisku umożliwia użytkownikom interakcję z tymi aplikacjami do transmisji. Możesz na przykład użyć tych aplikacji do transmisji, aby uzyskać dostęp do powiązanych stron internetowych lub wyników sportowych.
Zobacz sekcję Aplikacja do transmisji, aby dowiedzieć się, jak aplikacje do transmisji współdziałają z aplikacją telewizyjną.
W tym przykładzie:
- Aplikacja TV jest w centrum uwagi i odbiera wszystkie klucze.
-
KeyEvents
(np. czerwony przycisk) są przekazywane do aktywnego wejścia TV jakoInputEvents.
- Systemowe wejście TV integruje się ze stosem MHEG-5 i posiada uprawnienia systemowe
RECEIVE_INPUT_EVENT
. - Po otrzymaniu kodu aktywacyjnego (np. czerwony przycisk), wejście TV aktywuje aplikację do transmisji.
- Wejście TV wykorzystuje
KeyEvents
jakoInputEvents
, a aplikacja do emisji jest skupiona i obsługujeInputEvents
do momentu odrzucenia.
Uwaga : Wejścia telewizorów innych firm nigdy nie odbierają kluczy.
Wejście TV HAL
Wejście TV HAL wspomaga rozwój wejść TV w celu uzyskania dostępu do sprzętu specyficznego dla telewizora. Podobnie jak w przypadku innych warstw HAL systemu Android, warstwa HAL wejścia TV ( tv_input
) jest dostępna w drzewie źródłowym AOSP, a dostawca opracowuje jej implementację.
Aplikacja telewizyjna
Systemowa aplikacja telewizyjna prezentuje użytkownikowi treści telewizyjne na żywo. Wraz z platformą Android dostępna jest referencyjna aplikacja telewizyjna (Live TV), która może być używana bez zmian, dostosowywana, rozszerzana lub zastępowana przez producentów urządzeń. Kod źródłowy jest dostępny w projekcie Android Open Source i możesz zacząć od niego w artykule o aplikacji Reference TV .
Producenci urządzeń mogą rozszerzyć swoje aplikacje telewizyjne, aby wdrożyć funkcje producenta urządzenia lub specyficzne dla danego kraju, jednak nie jest to objęte zakresem TIF ani referencyjnej aplikacji telewizyjnej.
Systemowa aplikacja TV musi obsługiwać co najmniej następujące zadania:
Konfiguracja i konfiguracja
- Automatyczne wykrywanie wejść TV
- Pozwól wejść TV zainicjować konfigurację kanałów
- Kontroluj ustawienia rodzicielskie
- Edytuj kanały
Przeglądanie
- Uzyskaj dostęp i nawiguj po wszystkich kanałach telewizyjnych
- Uzyskaj dostęp do paska informacji o programie telewizyjnym
- Wyświetlanie danych elektronicznego przewodnika po programowaniu (EPG)
- Obsługa wielu ścieżek audio i napisów
- Podaj wyzwanie PIN kontroli rodzicielskiej
- Zezwalaj na nakładkę interfejsu wejścia TV dla standardu TV (HbbTV itp.)
- Wypełnij wyniki wyszukiwania kanałów i programów telewizyjnych
- Wyświetl karty łączące aplikacje
- Obsługa interfejsów API do zmiany czasu
- Obsługa funkcji DVR i obsługa interfejsów API nagrywania TV
Ten zestaw funkcji będzie się powiększał wraz z nowymi wersjami Androida, w których rozszerzono interfejsy API platformy TIF. CTS Verifier zapewnia pokrycie testów zgodności.
Obsługa wejść telewizyjnych innych firm
Android TV zapewnia programistyczne interfejsy API dla wejść telewizyjnych innych firm, umożliwiając zainstalowanym aplikacjom dostarczanie kanałów programowych do telewizji na żywo. Aby zapewnić kompatybilną implementację urządzenia z systemem Android, systemowa aplikacja TV ma pewne obowiązki dotyczące udostępniania użytkownikowi wejść i kanałów telewizyjnych innych firm. Referencyjna aplikacja TV na żywo zapewnia kompatybilną implementację; w przypadku wymiany systemowej aplikacji telewizyjnej producenci urządzeń muszą zapewnić, że ich własne aplikacje zapewniają podobną zgodność, aby spełnić oczekiwania programistów we wszystkich urządzeniach z systemem Android TV.
Systemowa aplikacja telewizyjna musi udostępniać dane wejściowe innych firm obok domyślnej usługi telewizji na żywo urządzenia. Obietnicą API dla programistów jest to, że użytkownicy będą mogli znaleźć kanały (po zainstalowaniu) w ramach standardowego doświadczenia telewizyjnego.
Wizualne rozróżnienie między kanałami wbudowanymi a kanałami innych firm jest dozwolone, zgodnie z definicją w sekcji aplikacji telewizyjnej na Androidzie CDD.
Poniższe sekcje pokazują, w jaki sposób aplikacja Telewizja na żywo spełnia wymagania CDD.
Konfiguracja nowego kanału
Dodawanie nowych wejść/kanałów innych firm rozpoczyna się od znalezienia i zainstalowania przez użytkownika wejścia telewizyjnego ze sklepu z aplikacjami, takiego jak Google Play.
Niektóre wejścia telewizyjne innych firm automatycznie dodają kanały do bazy danych TvProvider. Jednak większość zapewni działanie konfiguracji, aby umożliwić użytkownikowi skonfigurowanie kanałów, podanie danych logowania i inne działania. Systemowa aplikacja telewizyjna musi zapewnić użytkownikowi możliwość aktywacji tej czynności konfiguracyjnej, dlatego CDD wymaga, aby wejścia innych firm były minimalne, aby wykonać nawigację z dala od głównej aplikacji telewizyjnej.
Referencyjna aplikacja Telewizja na żywo udostępnia menu Źródła kanałów umożliwiające dostęp do wejść.




Ponadto po zainstalowaniu nowego wejścia TvInput w górnej części menu aplikacji TV wyświetlana jest karta powiadomienia, która przenosi użytkownika bezpośrednio do konfiguracji:

Jeśli użytkownik podejmie działanie za pośrednictwem powiadomienia, może wybrać konfigurację swoich źródeł, jak pokazano na rysunku 10.
Zobacz Zdefiniuj usługę wprowadzania sygnału telewizyjnego, aby poznać oczekiwania programistów w tym obszarze.
Dostosuj listę kanałów
Producenci urządzeń mogą udostępniać interfejs użytkownika, aby ukryć niektóre kanały i umożliwić użytkownikom zarządzanie własnymi EPG. Telewizja na żywo obejmuje tę funkcję.


EPG
Zewnętrzni programiści wprowadzania danych muszą mieć pewność, że użytkownicy mogą łatwo nawigować do swoich kanałów podczas ogólnego użytkowania, na wszystkich zgodnych urządzeniach z Android TV.
Kanały z wejść innych firm muszą być prezentowane jako część standardowego EPG na żywo w urządzeniu. Można użyć separacji wizualnej lub oddzielnych kategorii dla kanałów innych firm (patrz sekcja aplikacji TV na CDD systemu Android) — najważniejsze jest to, że użytkownicy mogą znaleźć kanały, które zainstalowali.
Szukaj
Producenci muszą wdrożyć aplikację telewizyjną, aby uwzględniać wyniki wyszukiwania dla globalnych żądań wyszukiwania, aby zapewnić jak najlepsze wrażenia użytkownika. Telewizja na żywo zapewnia implementację (patrz com.android.tv.search.TvProviderSearch ), która zapewnia wyniki z wejść innych firm (wymagane dla zgodności platformy), a także z wejść wbudowanych.
Przesunięcie czasu
W przypadku urządzeń z systemem Android 6.0 lub nowszym aplikacja telewizyjna musi obsługiwać interfejsy API do zmiany czasu w systemie Android . Ponadto producenci muszą zaimplementować sterowanie odtwarzaniem w aplikacji telewizyjnej, które umożliwiają użytkownikom wstrzymywanie, wznawianie, przewijanie do tyłu i przewijanie do przodu odtwarzania.
W przypadku wejść TV obsługujących przesunięcie czasu aplikacja TV musi wyświetlać elementy sterujące odtwarzaniem.

DVR
W przypadku urządzeń z systemem Android 7.0 lub nowszym aplikacja telewizyjna musi obsługiwać interfejsy API nagrywania telewizji w ramach systemu Android , aby obsługiwać, wyświetlać i odtwarzać nagrane programy.
Dzięki temu producenci urządzeń mogą podłączyć swoje podsystemy DVR do TIF i znacznie zmniejszyć wysiłek związany z integracją, który jest potrzebny do włączenia lub zintegrowania funkcji DVR na urządzeniu telewizyjnym. Umożliwia również stronom trzecim dostarczanie systemów DVR na rynku wtórnym, które można podłączyć do urządzenia z systemem Android TV.
Oprócz nagrywania treści na żywo aplikacja TV obsługuje również konflikty zasobów. Na przykład, jeśli urządzenie ma dwa tunery, może nagrywać jednocześnie dwa programy. Jeśli użytkownik poprosi o nagranie trzech, aplikacja telewizyjna musi poradzić sobie z konfliktem i powinna albo wyświetlić powiadomienie, albo poprosić użytkownika o zaplanowanie priorytetu dla tych żądań.
Aplikacje telewizyjne mogą również implementować bardziej wyrafinowaną logikę, na przykład pytanie użytkownika, czy chciałby nagrać wszystkie przyszłe odcinki serii, gdy poprosi o nagranie jednego odcinka.
Zobacz poniższy diagram, aby zapoznać się z możliwą implementacją DVR w Android TV.

- Usługa wejścia telewizyjnego informuje aplikację telewizyjną, ile tunerów jest dostępnych, aby aplikacja telewizyjna mogła poradzić sobie z możliwym konfliktem zasobów.
- Aplikacja TV odbiera zainicjowane przez użytkownika żądanie nagrania programu telewizyjnego.
- Aplikacja TV przechowuje harmonogram nagrywania w swojej wewnętrznej bazie danych.
- Gdy nadejdzie czas nagrywania, aplikacja telewizyjna przekazuje prośbę o dostrojenie do kanału powiązanego z nagraniem.
- Usługa wejścia telewizyjnego odbiera to żądanie, odpowiada, czy dostępne są odpowiednie zasoby, i dostraja się do kanału.
- Następnie aplikacja TV przekazuje żądanie rozpoczęcia nagrywania do programu TV Input Manager.
- Usługa wejścia telewizyjnego odbiera to żądanie i rozpoczyna nagrywanie.
- Usługa wejścia TV przechowuje rzeczywiste dane wideo w swojej pamięci, która może być pamięcią zewnętrzną lub pamięcią w chmurze.
- Gdy nadejdzie czas zakończenia nagrywania, aplikacja telewizyjna przekaże żądanie zatrzymania nagrywania do programu TV Input Manager.
- Gdy usługa wejścia telewizyjnego otrzyma żądanie, zatrzymuje nagrywanie i dodaje powiązane metadane do dostawcy telewizji, aby aplikacja telewizyjna mogła wyświetlić nagranie użytkownikom na żądanie.
Aby uzyskać więcej informacji na temat implementacji funkcji nagrywania w usłudze wejścia telewizyjnego, zapoznaj się z tym artykułem dotyczącym nagrywania telewizji .
Przydatne zasoby
- Android CDD i udokumentowane interfejsy API dla programistów są ostatecznymi odniesieniami.
- CTS Verifier sprawdza interfejsy API w ramach programu testowania kompatybilności. Porównanie tego z telewizją na żywo może być użytecznym sposobem sprawdzenia EPG, wyszukiwania, kontroli rodzicielskiej i innych wymagań w kontekście danych wejściowych innych firm.
- Zobacz Zdefiniuj usługę wprowadzania sygnału telewizyjnego, aby poznać oczekiwania programistów w tym obszarze.
Kontrola rodzicielska
Kontrola rodzicielska umożliwia użytkownikowi blokowanie niepożądanych kanałów i programów, ale ominięcie blokady poprzez wprowadzenie kodu PIN.
Odpowiedzialność za funkcję kontroli rodzicielskiej jest dzielona między aplikację telewizyjną, usługę Menedżera wejścia telewizyjnego, dostawcę telewizji i wejście telewizyjne.
Kontrola rodzicielska jest obowiązkowa i objęta weryfikatorem CTS.
W wielu krajach zdefiniowano systemy oceny, z których mogą korzystać wejścia telewizyjne za pośrednictwem interfejsu API TVContentRating . Ponadto wejścia telewizyjne mogą rejestrować własne niestandardowe systemy oceny, co pokazuje test CTS Verifier, który wprowadza ocenę „fałszywą”. W przypadku krajów, w których istnieje standardowy system oceny, zachęca się producentów urządzeń do łączenia kontroli rodzicielskiej TV Input Framework z wszelkimi innymi mechanizmami, które mogą zawierać.
Dostawca telewizji
Każdy wiersz kanału ma pole COLUMN_LOCKED
, które służy do blokowania określonych kanałów przed oglądaniem bez wprowadzania kodu PIN. Pole programu COLUMN_CONTENT_RATING
jest przeznaczone do wyświetlania i nie służy do wymuszania kontroli rodzicielskiej.
Menedżer wejścia telewizyjnego
TV Input Manager przechowuje wszystkie zablokowane TvContentRating
i odpowiada na isRatingBlocked()
, aby poinformować, czy zawartość z daną oceną powinna zostać zablokowana.
Wejście telewizyjne
Wejście TV sprawdza, czy bieżąca treść powinna być zablokowana, wywołując isRatingBlocked()
w Menedżerze wejścia TV, gdy zmieniła się ocena wyświetlanej treści (przy zmianie programu lub kanału) lub zmieniły się ustawienia kontroli rodzicielskiej (na ACTION_BLOCKED_RATINGS_CHANGED
i ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
) . Jeśli zawartość powinna być zablokowana, wejście TV wyłącza dźwięk i wideo oraz powiadamia aplikację telewizyjną, że bieżąca zawartość jest zablokowana, wywołując notifyContentBlocked(TvContentRating)
. Jeśli zawartość nie powinna być zablokowana, wejście TV włącza dźwięk i obraz oraz powiadamia aplikację telewizyjną, że bieżąca zawartość jest dozwolona, wywołując notifyContentAllowed()
.
Aplikacja telewizyjna
Aby honorować interfejsy API kontroli rodzicielskiej, a tym samym stworzyć zgodną platformę, systemowa aplikacja TV musi umożliwiać użytkownikom zarządzanie kontrolą rodzicielską, w tym wszelkie niestandardowe oceny zarejestrowane przez określone aplikacje.
Aplikacja telewizyjna wyświetla interfejs z kodem PIN, gdy zostanie powiadomiony przez wejście telewizyjne, że bieżąca zawartość jest zablokowana lub gdy użytkownik próbuje wyświetlić zablokowany kanał.
Aplikacja TV nie przechowuje bezpośrednio ustawień kontroli rodzicielskiej. Gdy użytkownik zmieni ustawienia kontroli rodzicielskiej, każda zablokowana TvContentRating
jest zapisywana przez TV Input Manager, a zablokowane kanały są przechowywane przez dostawcę telewizji.
Aby zmienić ustawienia kontroli rodzicielskiej, aplikacja telewizyjna musi zadeklarować uprawnienie android.permission.MODIFY_PARENTAL_CONTROLS
.
Zachęcamy producentów urządzeń do:
- Przeprowadź test kontroli rodzicielskiej CTS Verifier względem referencyjnej aplikacji telewizji na żywo, aby zademonstrować wymagania dotyczące zgodności.
- Użyj aplikacji Telewizja na żywo jako odniesienia dla własnej aplikacji telewizyjnej: w szczególności zapoznaj się ze źródłem ContentRatingsManager i RatingSystemsFragment oraz w jaki sposób radzą sobie z ocenami niestandardowymi.
HDMI-CEC
HDMI-CEC pozwala jednemu urządzeniu sterować innym, umożliwiając w ten sposób za pomocą jednego pilota sterowanie wieloma urządzeniami w kinie domowym. Jest używany przez Android TV do przyspieszenia konfiguracji i umożliwienia zdalnej kontroli nad różnymi wejściami telewizyjnymi za pośrednictwem centralnej aplikacji telewizyjnej. Na przykład może przełączać wejścia, włączać lub wyłączać urządzenia i nie tylko.
Android TIF implementuje HDMI-CEC jako usługę sterowania HDMI, dzięki czemu producenci urządzeń muszą jedynie opracować sterowniki niskiego poziomu, które współdziałają z lekkim Android TV HAL, pomijając bardziej złożoną logikę biznesową. Zapewniając standardową implementację, system Android stara się złagodzić problemy ze zgodnością, zmniejszając pofragmentowane implementacje i selektywną obsługę funkcji. Usługa sterowania HDMI wykorzystuje istniejące usługi Androida, w tym wejście i zasilanie.
Oznacza to, że istniejące implementacje HDMI-CEC będą musiały zostać przeprojektowane, aby współpracować z Android TIF. Zalecamy, aby platforma sprzętowa zawierała mikroprocesor do odbioru zasilania CEC i innych poleceń.

- Magistrala CEC otrzymuje polecenie z aktualnie aktywnego źródła, aby przełączyć się na inne źródło.
- Sterownik przekazuje polecenie do HDMI-CEC HAL.
- HAL powiadamia wszystkich
ActiveSourceChangeListeners
. - Usługa sterowania HDMI jest powiadamiana o zmianie źródła za pośrednictwem
ActiveSourceChangeListener
. - Usługa TV Input Manager generuje zamiar przełączenia źródła przez aplikację telewizyjną.
- Aplikacja telewizyjna tworzy następnie sesję menedżera wejścia telewizyjnego dla przełączanego wejścia telewizyjnego i wywołuje
setMain
w tej sesji. - Sesja TV Input Manager przekazuje te informacje do wejścia HDMI TV.
- Wejście telewizora HDMI żąda ustawienia powierzchni pasma bocznego.
- Usługa TV Input Manager generuje odpowiednie polecenie sterowania routingiem z powrotem do usługi HDMI Control, gdy powierzchnia jest ustawiona.
Wytyczne dotyczące integracji telewizorów
Aplikacja do transmisji
Ponieważ każdy kraj ma specyficzne wymagania dotyczące transmisji (MHEG, Teletext, HbbTV i inne), producenci powinni dostarczać własne rozwiązania dla aplikacji do transmisji, na przykład:
- MHEG: stos natywny
- Teletekst: natywny stos
- HbbTV: rozwiązanie HbbTV firmy Vewd Software
W wersji Android L Android TV oczekuje, że producenci urządzeń będą korzystać z integratorów systemów lub rozwiązań Androida dla regionalnych stosów telewizyjnych, przekazywać powierzchnię do stosów oprogramowania telewizora lub przekazywać niezbędny kod klucza do interakcji ze starszymi stosami.
Oto jak współdziałają aplikacja do transmisji i aplikacja TV:
- Aplikacja telewizyjna jest w centrum uwagi i odbiera wszystkie klucze.
- Aplikacja TV przekazuje klucze (np. czerwony przycisk) do urządzenia wejściowego TV.
- Urządzenie wejściowe TV jest wewnętrznie zintegrowane ze starszym stosem TV.
- Po otrzymaniu kodu aktywacji (np. czerwonego przycisku) urządzenie wejściowe TV aktywuje aplikacje do transmisji.
- Aplikacja do transmisji skupia się na aplikacji telewizyjnej i obsługuje działania użytkowników.
W przypadku wyszukiwania/rekomendacji głosowej aplikacja do transmisji może obsługiwać wyszukiwanie głosowe w aplikacji.