
Interfejs TIF (Input Framework) w Android TV upraszcza dostarczanie treści na żywo do Android TV. Interfejs TIF Androida udostępnia standardowy interfejs API, który umożliwia producentom tworzenie modułów wejściowych do sterowania Androidem TV, a także umożliwia wyszukiwanie i rekomendacje w telewizji na żywo za pomocą metadanych opublikowanych przez moduł wejściowy TV.
Ramy nie mają na celu implementacji standardów telewizyjnych ani wymagań regionalnych, ale ułatwiają producentom urządzeń spełnienie regionalnych standardów transmisji telewizji cyfrowej bez konieczności ponownej implementacji. Dokumentacja w tym rozdziale może być też przydatna deweloperom aplikacji innych firm, którzy chcą tworzyć niestandardowe wejścia TV.
Komponenty
Implementacja Android TV Input Framework obejmuje menedżera wejścia TV. TIF działa z aplikacją TV, która jest aplikacją systemową i nie może zostać zastąpiona aplikacją innej firmy. Umożliwia dostęp do wbudowanych kanałów i kanałów tunera IP. Aplikacja TV komunikuje się z modułami wejścia TV dostarczonymi przez producenta urządzenia lub inne strony za pomocą menedżera wejścia TV.
Ramka wejścia TV składa się z:
- Dostawca telewizji (
com.android.providers.tv.TvProvider
): baza danych z kanałami, programami i powiązanymi uprawnieniami. - Aplikacja na telewizor (
com.android.tv.TvActivity
): aplikacja, która obsługuje interakcje z użytkownikiem - Menedżer wejść telewizora (
android.media.tv.TvInputManager
): umożliwia wejściom telewizora komunikowanie się z aplikacją telewizyjną. - Wejście TV: aplikacja reprezentująca tunery fizyczne lub wirtualne oraz porty wejściowe
- HAL wejścia TV (moduł
tv_input
): definicja sprzętu, która umożliwia systemowi źródeł TV dostęp do sprzętu związanego z telewizorem po jego 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 złącze HDMI.
- Tuner Framework: framework dla wbudowanego tunera TV
- MediaCas: framework dostępu warunkowego
- Tuner Resource Manager: usługa do zarządzania zasobem sprzętowym dla wejścia TV, MediaCas i wbudowanego tunera
Te komponenty są opisane szczegółowo poniżej. Aby uzyskać szczegółowy widok architektury interfejsu wejściowego Androida TV, zapoznaj się z diagramem poniżej.

Płynięcie
Oto jak działa ta architektura:
- Użytkownik widzi aplikację TV i może z nią wchodzić w interakcje. Jest to aplikacja systemowa, której nie można zastąpić aplikacją innej firmy.
- Aplikacja TV wyświetla treści audiowizualne z wejścia TV.
- Aplikacja na telewizor nie może bezpośrednio komunikować się z wejściami telewizora. Menedżer wejść telewizyjnych określa stan wejść telewizyjnych dla aplikacji TV. Więcej informacji o tych ograniczeniach znajdziesz w sekcji Menedżer wejść telewizyjnych.
Uprawnienia
- Tylko
signatureOrSystem
wejścia telewizyjne i aplikacja telewizyjna mają pełny dostęp do bazy danych dostawcy telewizji i mogą odbierać zdarzenia KeyEvent. - Tylko systemowe źródła TV mogą uzyskiwać dostęp do interfejsu HAL źródła TV za pomocą usługi menedżera źródła TV. Do źródeł sygnału telewizyjnego uzyskuje się dostęp w ramach sesji menedżera źródeł sygnału telewizyjnego.
- Wejścia telewizyjne innych firm mają dostęp do bazy danych dostawcy telewizji z ograniczeniem do pakietu i mogą tylko odczytywać i zapisywać wiersze odpowiadające tym pakietom.
- Wejścia telewizora innych firm mogą wyświetlać własne treści lub treści z wejść telewizora producenta urządzenia, takich jak HDMI1. Nie mogą wyświetlać treści z wejść telewizora, które nie są przelotowe, takich jak wbudowany tuner lub tuner IPTV.
TV_INPUT_HARDWARE
uprawnienia dla aplikacji sprzętowego wejścia TV, sygnalizuje usługę menedżera wejścia TV, aby powiadomić usługę wejścia TV o tym, że należy wywołać usługę menedżera wejścia TV i dodać jej wejścia TV. To uprawnienie umożliwia aplikacji sprzętowej obsługującej wejścia telewizyjne 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 zawiera kanały i programy z wejść telewizyjnych. Dostawca telewizji publikuje również powiązane uprawnienia i nimi zarządza, aby wejścia telewizyjne mogły widzieć tylko własne rekordy. Na przykład konkretny element wejścia TV może wyświetlać tylko te kanały i programy, które zostały przez niego dostarczone, i nie może uzyskać dostępu do kanałów i programów innych elementów wejścia TV.
Usługodawca telewizyjny mapuje wewnętrznie „gatunek nadawania” na „kanoniczny gatunek”. Dane wejściowe dotyczące telewizji odpowiadają za wypełnienie pola „Gatunek nadawania” wartością z podstawowego standardu nadawania, a pole „Gatunek kanoniczny” zostanie automatycznie wypełnione odpowiednim powiązanym gatunkiem z android.provider.TvContract.Genres
. Na przykład w przypadku standardu transmisji ATSC A/65 i programu o gatunku 0x25 (czyli „Sporty”) wejście TV wypełni pole „Gatunek transmisji” ciągiem znaków „Sporty”, a dostawca telewizji wypełni pole „Gatunek kanoniczny” wartością mapowaną android.provider.TvContract.Genres.SPORTS
.
Szczegółowy widok dostawcy telewizji znajdziesz na diagramie poniżej.

Tylko aplikacje na partycji systemu uprzywilejowanego mogą odczytywać całą bazę danych dostawcy TV.
Przesyłane przez przełącznik wejścia TV nie przechowują kanałów i programów.
Oprócz standardowych pól dotyczących kanałów i programów baza danych dostawcy telewizji zawiera również pole typu BLOB (COLUMN_INTERNAL_PROVIDER_DATA
) w każdej tabeli, którego dostawcy danych wejściowych telewizji mogą używać do przechowywania dowolnych danych. Dane BLOB mogą zawierać informacje niestandardowe, takie jak częstotliwość powiązanego tunera, i mogą być dostarczane w buforze protokołu lub w innej formie. Pole „Możliwość wyszukiwania” umożliwia wyłączenie niektórych kanałów w wyszukiwarce (np. w celu spełnienia wymagań dotyczących ochrony treści w poszczególnych krajach).
Przykłady pól bazy danych
Dostawca telewizji 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 przez wejścia TV oraz aplikacje systemowe, takie jak aplikacja TV. Te tabele mają 4 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
) lub numer (COLUMN_DISPLAY_NUMBER
) albo tytuł oglądanego programu. - Metadane: istnieją 3 pola służące do identyfikowania 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 korzystania z interfejsów TV.
Niektóre pola, takie jakCOLUMN_INTERNAL_PROVIDER_DATA
, można dostosowywać. Pola BLOB, w których urządzenie wejściowe TV może przechowywać dowolne metadane dotyczące kanału lub programu. - Flaga: pola flagi wskazują, czy kanał powinien być ograniczony w wyszukiwarce, przeglądarce lub w przypadku oglądania. Można je ustawić tylko na poziomie kanału. Wszystkie programy korzystają z ustawienia na kanale.
COLUMN_SEARCHABLE
: w niektórych regionach może być wymagane ograniczenie wyszukiwania na niektórych kanałach.COLUMN_SEARCHABLE = 0
Oznacza, że kanał nie powinien być widoczny w wynikach wyszukiwania.COLUMN_BROWSABLE
: widoczne tylko dla aplikacji systemowych. Ograniczenie przeglądania kanału przez aplikacje.COLUMN_BROWSABLE = 0
oznacza, że kanał nie powinien być uwzględniany na liście kanałów.COLUMN_LOCKED
: widoczne tylko dla aplikacji systemowych. ograniczenie możliwości oglądania kanału przez nieprawidłowe konta bez podawania kodu PIN;COLUMN_LOCKED = 1
oznacza, że kanał powinien być chroniony przez kontrolę rodzicielską.
Pełną listę pól znajdziesz w artykule android/frameworks/base/media/java/android/media/tv/TvContract.java
Uprawnienia i kontrola dostępu
Wszystkie pola są widoczne dla wszystkich osób, które mają dostęp do odpowiedniego wiersza. Użytkownicy nie mają bezpośredniego dostępu do pól. Widzą tylko to, co wyświetla aplikacja TV, aplikacje systemowe lub wejścia TV.
- Każdy wiersz ma
PACKAGE_NAME
, czyli pakiet (aplikację) będący właścicielem tego wiersza, sprawdzany w zapytaniach, wstawianiu i aktualizowaniu za pomocą klasy TvProvider.java. Wejście TV może uzyskiwać dostęp tylko do informacji, które samo zapisuje, i jest odizolowane od informacji dostarczanych przez inne wejścia TV. - Uprawnienia do ODCZYTU i ZAPISU w pliku AndroidManifest.xml (wymagają zgody użytkownika) w celu określenia dostępnych kanałów.
- Tylko aplikacje
signatureOrSystem
mogą uzyskać uprawnienieACCESS_ALL_EPG_DATA
do dostępu do całej bazy danych.
Menedżer wejść TV
Menedżer danych wejściowych TV udostępnia centralny interfejs API systemu dla całego systemu Android TV Input Framework. Zarządza interakcjami między aplikacjami a wejściami na telewizorze oraz zapewnia funkcję kontroli rodzicielskiej. Sesje menedżera wejścia TV muszą być tworzone w pojedynkę z wejściami TV. Menedżer wejść TV umożliwia dostęp do zainstalowanych wejść TV, dzięki czemu aplikacje mogą:
- Wyświetlanie wejść telewizora i sprawdzanie ich stanu
- Tworzenie sesji i zarządzanie słuchaczami
W przypadku sesji aplikacja TV może dostroić wejście TV tylko do URI dodanych do bazy danych dostawcy TV, z wyjątkiem przejść przez wejścia TV, które można dostroić za pomocą TvContract.buildChannelUriForPassthroughInput()
.
Sygnał wejściowy telewizora może też mieć ustawioną głośność. Wejścia TV dostarczone i podpisane przez producenta urządzenia (aplikacje z podpisem cyfrowym) lub inne aplikacje zainstalowane w partycji systemowej będą miały dostęp do całej bazy danych dostawcy TV. 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
z android.media.tv.TvInputManager
, aby została wywołana po zmianie stanu wejścia TV lub po dodaniu lub usunięciu wejścia TV. Na przykład aplikacja na telewizor może zareagować na odłączenie źródła telewizyjnego, wyświetlając je jako odłączone i uniemożliwiając jego wybranie.
Menedżer źródeł telewizyjnych abstrahuje komunikację między aplikacją telewizyjną a źródłami telewizyjnymi. Standardowy interfejs menedżera wejścia TV i wejścia TV umożliwia wielu producentom urządzeń tworzenie własnych aplikacji TV, a także zapewnianie działania wszystkich aplikacji TV dla wszystkich zewnętrznych wejść TV.
Wejścia TV
Wejścia TV to aplikacje na Androida, które mają plik AndroidManifest.xml i są zainstalowane (przez Sklep Play, wstępnie zainstalowane lub zainstalowane z pliku). Android TV obsługuje wstępnie zainstalowane aplikacje systemowe, aplikacje podpisane przez producenta urządzenia oraz zewnętrzne wejścia TV.
Niektóre wejścia, takie jak wejście HDMI czy wejście wbudowanego tunera, mogą być udostępniane tylko przez producenta, ponieważ są one bezpośrednio związane z podstawowym sprzętem. Inne usługi, takie jak IPTV, usługi przesyłania treści do innych urządzeń i zewnętrzne dekodery STB, mogą być dostarczane przez firmy zewnętrzne jako pakiety APK w Sklepie Google Play. Po pobraniu i zainstalowaniu nowego źródła można je wybrać w aplikacji TV.
Przykład danych wejściowych przekazywanych dalej

W tym przykładzie zaufane urządzenie TV Input jest dostarczane przez producenta urządzenia i ma pełny dostęp do dostawcy telewizji. Ponieważ jest to przelotne 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 przekazywanych dalej, użyj metody android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
.
Aplikacja TV komunikuje się z menedżerem wejść TV, aby uzyskać dostęp do wejścia HDMI TV.
Przykład wbudowanego tunera

W tym przykładzie zaufany dostawca wbudowanego tunera telewizyjnego jest dostarczany przez producenta urządzenia i ma pełny dostęp do dostawcy telewizji.
Przykład danych wejściowych z innej firmy

W tym przykładzie zewnętrzne wejście STB TV jest dostarczane przez zewnętrzną firmę. Ponieważ to wejście telewizora nie ma bezpośredniego dostępu do przychodzącego sygnału wideo HDMI, musi przechodzić przez menedżera wejść telewizora i używać wejścia HDMI telewizora udostępnianego przez producenta urządzenia.
Za pomocą menedżera wejść telewizora zewnętrzny dekoder STB może komunikować się z wejściem HDMI telewizora i prosić o wyświetlenie obrazu na HDMI1. Dzięki temu dekoder może sterować telewizorem, a HDMI TV Input dostarczone przez producenta może renderować film.
Przykład obrazu w obrazie (PIP)

Diagram powyżej pokazuje, jak przyciski na pilocie są przekazywane do konkretnego wejścia telewizora w celu wyświetlenia obrazu w obrazie (PIP). Naciśnięcia tych przycisków są interpretowane przez sterownik sprzętowy dostarczony przez producenta urządzenia, który zamienia kody skanowania sprzętowego na kody klawiszy Androida i przekazuje je do standardowego kanału wejściowego Androida oraz funkcji InputReader
i InputDispatcher
jako zdarzenia klawiatury.
Zdarzenia te z kolei powodują zdarzenia w aplikacji TV, jeśli jest ona aktywna.
Do odbierania InputEvents
kwalifikują się tylko systemowe wejścia telewizyjne, które mają uprawnienia systemowe RECEIVE_INPUT_EVENT
.
Wejście TV jest odpowiedzialne za określenie, które zdarzenia wejściowe mają być przetwarzane, i powinno zezwolić aplikacji TV na obsługę kluczy, których nie musi przetwarzać.
Aplikacja TV musi wiedzieć, który system wejścia TV jest aktywny (czyli wybrany przez użytkownika), aby rozróżniać przychodzące KeyEvents
i przekierowywać je do odpowiedniej sesji menedżera wejścia TV, wywołując dispatchInputEvent()
, aby przekazać zdarzenie do powiązanego wejścia TV.
Przykład danych wejściowych MHEG-5
Na diagramie poniżej widać szczegółowy sposób kierowania KeyEvents
przez interfejs TIF Androida.

Pokazuje on proces korzystania z aplikacji z czerwonym przyciskiem, która jest popularna w Europie i umożliwia użytkownikom dostęp do aplikacji interaktywnych na telewizorach. Aplikacja może być dostarczana za pomocą tego strumienia transportu. Po kliknięciu przycisku użytkownicy mogą wchodzić w interakcje z tymi aplikacjami do transmisji. Możesz na przykład używać tych aplikacji do strumieniowego przesyłania stron internetowych lub wyników sportowych.
Więcej informacji o tym, jak aplikacje do przesyłania treści współpracują z aplikacją TV, znajdziesz w sekcji Aplikacja do przesyłania treści.
W tym przykładzie:
- Aplikacja TV jest aktywna i odbiera wszystkie klucze.
KeyEvents
(np. czerwony przycisk) jest przekazywany do aktywnego telewizora Wprowadzanie jakoInputEvents.
- System TV Input integruje się z modułem MHEG-5 i ma uprawnienia systemowe
RECEIVE_INPUT_EVENT
. - Po otrzymaniu kodu aktywacyjnego (np. czerwonego przycisku) wejście TV aktywuje aplikację do transmisji.
- Wejście TV zużywa
KeyEvents
jakoInputEvents
a aplikacja do przesyłania strumieniowego jest w centrum uwagi i obsługujeInputEvents
do momentu zamknięcia.
Uwaga: wejścia telewizora innych firm nigdy nie otrzymują kluczy.
Interfejs HAL wejścia TV
Interfejs HAL dla wejścia TV ułatwia tworzenie aplikacji korzystających z wejść TV, które umożliwiają dostęp do sprzętu związanego z telewizorem.
Podobnie jak w przypadku innych interfejsów HAL systemu Android, interfejs HAL dla wejścia z telewizora (tv_input
) jest dostępny w drzewie źródłowym AOSP, a jego implementację opracowuje producent.
Uwaga: od Androida 14 interfejs HAL dla wejścia TV jest definiowany za pomocą AIDL.
Aplikacja TV
Systemowa aplikacja TV wyświetla użytkownikowi treści z telewizji na żywo. Wraz z platformą Android udostępniana jest referencyjna aplikacja TV (telewizja na żywo), którą można używać w postaci oryginalnej, dostosowywać, rozszerzać lub zastępować przez producentów urządzeń. Kod źródłowy jest dostępny w ramach projektu Android Open Source. Informacje o tym, jak zacząć z użyciem kodu, znajdziesz w artykule Aplikacja Reference TV.
Producenci urządzeń mogą rozszerzać swoje aplikacje na telewizory o funkcje specyficzne dla danego producenta lub kraju, ale nie jest to objęte zakresem TIF ani aplikacji referencyjnej na telewizory.
Aplikacja systemowa TV musi obsługiwać co najmniej te zadania:
Instalacja i konfiguracja
- Automatyczne wykrywanie wejść telewizora
- Zezwalanie urządzeniom wejściowym telewizora na inicjowanie konfiguracji kanałów
- Kontrolowanie ustawień kontroli rodzicielskiej
- Edytuj kanały
Wyświetlam
- dostęp do wszystkich kanałów telewizyjnych i możliwość poruszania się po nich,
- Dostęp do paska z informacjami o programie telewizyjnym
- Wyświetlanie danych elektronicznego przewodnika programowego (EPG)
- obsługa wielu ścieżek audio i napisów;
- Wymaganie podania kodu PIN kontroli rodzicielskiej
- Zezwalanie na nakładanie interfejsu źródła TV na standard TV (HbbTV itp.)
- Wypełnianie wyników wyszukiwania kanałów i programów telewizyjnych
- Wyświetlanie kart łączenia aplikacji
- Obsługiwane interfejsy API przesuwania w czasie
- obsługa funkcji DVR i obsługa interfejsów API nagrywania telewizji;
Ten zestaw funkcji będzie się zwiększać wraz z nowymi wersjami Androida, w których rozszerzono interfejsy API TIF platformy. Narzędzie CTS Verifier zapewnia pokrycie testami zgodności.
Obsługa wejść telewizyjnych innych firm
Android TV udostępnia interfejsy API dla deweloperów dla zewnętrznych wejść TV, umożliwiając zainstalowanym aplikacjom dostarczanie kanałów programów telewizyjnych w telewizji na żywo. Aby zapewnić zgodność z urządzeniami z Androidem, aplikacja telewizyjna systemu musi spełniać pewne wymagania dotyczące wyświetlania użytkownikowi wejść i kanałów telewizyjnych innych firm. Referencyjna aplikacja TV na żywo zapewnia zgodną implementację. Jeśli zastąpisz aplikację TV systemową, producenci urządzeń muszą zadbać o to, aby ich własne aplikacje zapewniały podobną zgodność, aby spełniać oczekiwania deweloperów na wszystkich urządzeniach z Androidem TV.
Systemowa aplikacja telewizyjna musi wyświetlać dane wejściowe pochodzące od innych firm obok domyślnej usługi telewizji na żywo na urządzeniu. Dzięki interfejsom API deweloperów użytkownicy będą mogli znaleźć kanały (po zainstalowaniu) w ramach standardowego interfejsu telewizora.
Wizualne rozróżnianie kanałów wbudowanych i kanałów innych firm jest dozwolone zgodnie z definicją w sekcji Aplikacja TV w dokumencie Android CDD.
W następnych sekcjach opisujemy, jak aplikacja Telewizja na żywo spełnia wymagania dotyczące zgodności z zasadami.
Nowa konfiguracja kanału
Dodawanie nowych wejść/kanałów innych firm rozpoczyna się od znalezienia i zainstalowania wejścia TV w sklepie z aplikacjami, takim jak Google Play.
Niektóre wejścia telewizyjne innych firm automatycznie dodają kanały do bazy danych TvProvider. Większość z nich zawiera jednak aktywność konfiguracji, która umożliwia użytkownikowi skonfigurowanie kanałów, podanie danych logowania i wykonanie innych działań. Aplikacja systemowa TV musi zapewnić użytkownikowi możliwość aktywowania tej czynności konfiguracji, dlatego w ramach CDD wymagane jest, aby dane wejściowe aplikacji innych firm były minimalnymi działaniami nawigacyjnymi poza główną aplikacją TV.
Referencyjna aplikacja Telewizja na żywo udostępnia menu Źródła kanałów, które umożliwia dostęp do wejść.




Po zainstalowaniu nowego wejścia TV na górze menu aplikacji TV wyświetla się karta powiadomienia, która przekierowuje użytkownika bezpośrednio do ustawień:

Jeśli użytkownik podejmie działanie w ramach powiadomienia, może skonfigurować źródła, jak pokazano na rysunku 10.
Aby dowiedzieć się, czego oczekują od Ciebie deweloperzy w tej dziedzinie, przeczytaj artykuł Definiowanie usługi wejścia na telewizor.
Dostosowywanie listy
Producenci urządzeń mogą udostępnić interfejs użytkownika umożliwiający ukrywanie niektórych kanałów i zarządzanie własnymi listami EPG. Telewizja na żywo obejmuje tę funkcję.


EPG
Deweloperzy zewnętrznych urządzeń wejściowych muszą mieć pewność, że użytkownicy mogą łatwo przechodzić do ich kanałów podczas ogólnego użytkowania na wszystkich zgodnych urządzeniach z Android TV.
Kanały z źródeł zewnętrznych muszą być prezentowane jako część standardowego przewodnika po programach telewizji na żywo na urządzeniu. Można użyć wizualnego oddzielenia lub osobnych kategorii dla kanałów innych firm (patrz sekcja dotycząca aplikacji TV w dokumentacji Android CDD). Najważniejsze jest to, aby użytkownicy mogli znaleźć zainstalowane kanały.
Szukaj
Aby zapewnić użytkownikom jak najlepsze wrażenia, producenci muszą zaimplementować aplikację TV, która będzie uwzględniać wyniki wyszukiwania dla globalnych zapytań. Telewizja na żywo zapewnia implementację (patrz , która dostarcza wyniki z danych zewnętrznych (wymagane do zapewnienia zgodności z platformą) oraz z wbudowanych danych wejściowych.
Przesuwanie w czasie
W przypadku urządzeń z Androidem 6.0 lub nowszym aplikacja na telewizor musi obsługiwać interfejsy API do zmiany czasu w ramach platformy Android (timeshifting). Producenci muszą też wdrożyć w aplikacji na telewizor sterowanie odtwarzaniem, które umożliwia użytkownikom wstrzymywanie, wznawianie, przewijanie do tyłu i do przodu.
W przypadku źródeł sygnału telewizyjnego, które obsługują przesuwanie w czasie, aplikacja telewizyjna musi wyświetlać elementy sterujące odtwarzaniem.

DVR
W przypadku urządzeń z Androidem 7.0 lub nowszym aplikacja na telewizor musi obsługiwać interfejsy API do nagrywania treści na telewizor w ramach Androida, aby obsługiwać, wyświetlać i odtwarzać nagrane programy.
Dzięki temu producenci urządzeń mogą podłączać swoje podsystemy DVR do TIF i znacznie ograniczyć wysiłki związane z integracją, aby włączyć lub zintegrować funkcje DVR na urządzeniu telewizyjnym. Umożliwia też innym firmom oferowanie systemów DVR innych niż te dołączone, które można podłączyć do urządzenia z Androidem TV.
Oprócz nagrywania treści na żywo aplikacja na telewizor obsługuje też konflikty zasobów. Jeśli na przykład urządzenie ma 2 tunery, może nagrywać 2 programy jednocześnie. Jeśli użytkownik poprosi o nagranie 3 programów, aplikacja na telewizor musi rozwiązać ten konflikt, wyświetlając powiadomienie lub prosząc użytkownika o przypisanie priorytetu tym programom.
Aplikacje TV mogą też stosować bardziej zaawansowaną logikę, np. pytać użytkownika, czy chce nagrywać wszystkie przyszłe odcinki serialu, gdy poprosi o nagranie jednego odcinka.
Na poniższym diagramie przedstawiono możliwe wdrożenie DVR na Androidzie TV.

- Usługa wejścia TV informuje aplikację TV, ile tunerów jest dostępnych, aby mogła ona obsłużyć możliwy konflikt zasobów.
- Aplikacja TV otrzymuje żądanie nagrywania programu telewizyjnego przesłane przez użytkownika.
- Aplikacja TV przechowuje harmonogram nagrywania w swojej wewnętrznej bazie danych.
- Gdy nadejdzie czas nagrywania, aplikacja TV prześle żądanie przełączenia na kanał powiązany z nagrywaniem.
- Usługa wejścia TV otrzymuje to żądanie, odpowiada, czy są odpowiednie zasoby, i przełącza się na kanał.
- Następnie aplikacja TV przekazuje żądanie rozpoczęcia nagrywania do menedżera wejścia TV.
- Usługa TV Input Service odbiera to żądanie i rozpoczyna nagrywanie.
- Usługa wejściowa TV przechowuje rzeczywiste dane wideo w swoim magazynie, który może być zewnętrznym magazynem lub magazynem w chmurze.
- Gdy nadejdzie czas zakończenia nagrywania, aplikacja TV przekaże prośbę o zatrzymanie nagrywania do menedżera wejść TV.
- Gdy usługa wejścia TV otrzyma prośbę, zatrzymuje nagrywanie i dodaje powiązane metadane do dostawcy telewizji, aby aplikacja telewizyjna mogła wyświetlić nagranie użytkownikom na żądanie.
Więcej informacji o wdrażaniu funkcji nagrywania w usłudze wejścia TV znajdziesz w artykule Nagrywanie telewizji.
Przydatne materiały
- CDD Androida i zadokumentowane interfejsy API dla deweloperów stanowią ostateczne źródło informacji.
- Narzędzie CTS Verifier testuje interfejsy API w ramach programu testów zgodności. Uruchomienie tego testu w przypadku transmisji na żywo może być przydatnym sposobem na sprawdzenie EPG, wyszukiwania, kontroli rodzicielskiej i innych wymagań w kontekście danych wejściowych pochodzących od innych firm.
- Więcej informacji o oczekiwaniach deweloperów w tym zakresie znajdziesz w artykule Definiowanie usługi wejścia TV.
Kontrola rodzicielska
Kontrola rodzicielska umożliwia użytkownikowi blokowanie niechcianych kanałów i programów, ale pozwala też ominąć blokadę przez wpisanie kodu PIN.
Odpowiedzialność za funkcję kontroli rodzicielskiej jest dzielona między aplikację TV, usługę menedżera wejścia TV, dostawcę telewizji i wejście TV.
Kontrola rodzicielska jest obowiązkowa i jest objęta weryfikatorem CTS.
W niektórych krajach istnieją zdefiniowane systemy oceniania, których telewizory mogą używać za pomocą interfejsu TVContentRating API. Dodatkowo wejścia telewizyjne mogą rejestrować własne systemy oceny, jak pokazano w teście CTS Verifier, który wprowadza „fałszywą” ocenę. W krajach, w których istnieje standardowy system oceny, producentów urządzeń zachęcamy do połączenia kontroli rodzicielskiej w ramach interfejsu TV Input Framework z innymi mechanizmami, które mogą być przez nich stosowane.
Dostawca telewizji
Każdy wiersz kanału ma pole COLUMN_LOCKED
, które służy do blokowania dostępu do określonych kanałów bez wpisywania kodu PIN. Pole programu
COLUMN_CONTENT_RATING
służy do wyświetlania i nie jest używane do egzekwowania kontroli rodzicielskiej.
Menedżer wejść TV
Menedżer wejścia TV przechowuje wszystkie zablokowane TvContentRating
i odpowiada na isRatingBlocked()
, aby poinformować, czy treści o danym współczynniku powinny zostać zablokowane.
Wejście TV
Wejście TV sprawdza, czy należy zablokować wyświetlane treści, wywołując funkcję isRatingBlocked()
w menedżerze wejść TV, gdy zmieni się ocena wyświetlanych treści (przy zmianie programu lub kanału) lub gdy zmienią się ustawienia kontroli rodzicielskiej (przy ACTION_BLOCKED_RATINGS_CHANGED
i ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
). Jeśli treści powinny zostać zablokowane, wejście TV wyłącza dźwięk i obraz oraz wysyła do aplikacji TV powiadomienie o tym, że aktualne treści są zablokowane, wywołując funkcję notifyContentBlocked(TvContentRating)
. Jeśli treści nie powinny być blokowane, wejście TV włącza dźwięk i obraz oraz powiadamia aplikację TV, że bieżące treści są dozwolone, wywołując notifyContentAllowed()
.
Aplikacja TV
Aby obsługiwać interfejsy API kontroli rodzicielskiej i w ten sposób tworzyć zgodną platformę, aplikacja systemowa na telewizor musi umożliwiać użytkownikom zarządzanie kontrolą rodzicielską, w tym wszelkimi niestandardowymi kategoriami zarejestrowanymi przez konkretne aplikacje.
Aplikacja TV wyświetla interfejs kodu PIN, gdy otrzyma powiadomienie od wejścia TV, że bieżące treści są zablokowane, lub gdy użytkownik próbuje wyświetlić zablokowany kanał.
Aplikacja na telewizor nie przechowuje bezpośrednio ustawień kontroli rodzicielskiej. Gdy użytkownik zmieni ustawienia kontroli rodzicielskiej, każdy zablokowany kanał TvContentRating
zostanie zapisany przez menedżera wejścia telewizyjnego, a zablokowane kanały przez dostawcę telewizji.
Aby zmienić ustawienia kontroli rodzicielskiej, aplikacja na telewizor musi zadeklarować uprawnienie android.permission.MODIFY_PARENTAL_CONTROLS
.
Producentowi urządzenia zalecamy:
- Wykonaj test CTS Verifier dotyczący kontroli rodzicielskiej na przykładzie aplikacji referencyjnej Live TV, aby sprawdzić zgodność.
- Użyj aplikacji Live TV jako odniesienia do własnej aplikacji TV: w szczególności zobacz źródła ContentRatingsManager i RatingSystemsFragment oraz sposób, w jaki aplikacja obsługuje niestandardowe oceny.
HDMI-CEC
Złącze HDMI-CEC umożliwia sterowanie jednym urządzeniem przez inne, dzięki czemu jeden pilot może sterować wieloma urządzeniami w domowym systemie kina domowego. Android TV używa go do przyspieszania konfiguracji i uzyskiwania zdalnego dostępu do różnych wejść telewizora za pomocą centralnej aplikacji TV. Może na przykład przełączać wejścia, włączać i wyłączać urządzenia itp.
Interfejs TIF Androida implementuje HDMI-CEC jako usługę sterowania HDMI, dzięki czemu producenci urządzeń muszą tylko opracować niskopoziomowe sterowniki, które będą współpracować z lekką biblioteką HAL Androida TV, pomijając bardziej złożoną logikę biznesową. Udostępniając standardową implementację, Android stara się ograniczyć problemy z zgodnością, ograniczając fragmentaryczne implementacje i wybrane funkcje. Usługa HDMI Control Service korzysta z dotychczasowych usług Androida, w tym z wejścia i zasilania.
Oznacza to, że istniejące implementacje HDMI-CEC będą musiały zostać przeprojektowane, aby mogły współpracować z interfejsem TIF Androida. Zalecamy, aby platforma sprzętowa zawierała mikroprocesor, który będzie odbierał sygnał włączania CEC i inne polecenia.

- Magistrala CEC otrzymuje polecenie od bieżącego źródła, aby przełączyć się na inne źródło.
- Sterownik przekazuje polecenie do interfejsu HDMI-CEC HAL.
- HAL wysyła powiadomienia do wszystkich
ActiveSourceChangeListeners
. - Usługa HDMI Control Service jest powiadamiana o zmianie źródła za pomocą
ActiveSourceChangeListener
. - Usługa menedżera źródła sygnału telewizyjnego generuje dla aplikacji na telewizor intencję przełączenia źródła.
- Następnie aplikacja telewizyjna tworzy sesję menedżera wejścia telewizyjnego dla przełączonego wejścia telewizyjnego i wywołuje funkcję
setMain
w tej sesji. - Sesja menedżera wejścia telewizora przekazuje te informacje do wejścia HDMI telewizora.
- Wejście HDMI telewizora prosi o ustawienie powierzchni paska bocznego.
- Gdy powierzchnia jest ustawiona, usługa menedżera wejść telewizora generuje odpowiednie polecenie sterowania routingiem i wysyła je z powrotem do usługi sterowania HDMI.
Wskazówki dotyczące integracji z telewizją
Aplikacja do przesyłania wiadomości
Każdy kraj ma specyficzne wymagania dotyczące transmisji (MHEG, teletekst, HbbTV itp.), dlatego producenci powinni dostarczać własne rozwiązania dla aplikacji do transmisji, na przykład:
- MHEG: stos natywny
- Telegazeta: natywny stos
- HbbTV: rozwiązanie HbbTV od Vewd Software
W wersji Androida L Android TV wymaga od producentów urządzeń korzystania z integratorów systemów lub rozwiązań Androida dla regionalnych pakietów telewizyjnych, przekazywania interfejsu do pakietów oprogramowania telewizyjnego lub przekazywania niezbędnego kodu klucza w celu interakcji ze starszymi pakietami.
Oto jak aplikacja do przesyłania strumieniowego i aplikacja na telewizor współdziałają ze sobą:
- Aplikacja TV jest aktywna i odbiera wszystkie klucze.
- Aplikacja TV przekazuje przyciski (np. czerwony przycisk) do urządzenia wejściowego telewizora.
- Urządzenie wejścia TV jest wewnętrznie zintegrowane ze starszą warstwą TV.
- Po otrzymaniu kodu aktywacyjnego (np. przycisku czerwonego) urządzenie wejściowe telewizora aktywuje aplikacje do transmisji.
- Aplikacja do przesyłania staje się aktywna w aplikacji TV i obsługuje działania użytkownika.
W przypadku wyszukiwania głosowego/rekomendacji aplikacja do przesyłania może obsługiwać wyszukiwanie w aplikacji.