Platforma danych wejściowych Android TV (TIF) upraszcza przesyłanie treści na żywo do Androida 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.
Nie ma na celu wdrażania standardów telewizyjnych ani regionalnych wymagań, ale ułatwia producentom urządzeń przestrzeganie regionalnych standardów telewizji cyfrowej bez konieczności ich ponownego wdrażania. 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 – czyli aplikacją systemową, której nie można zastąpić aplikacją innej firmy – i pozwala na dostęp do kanałów wbudowanych oraz kanałów IP 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.
Struktura danych wejściowych z telewizji składa się z tych elementów:
- 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ą telewizora. - Wejście TV: aplikacja reprezentująca fizyczne lub wirtualne tunery i porty wejściowe.
- HAL źródła 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 wdrożeniu - 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.
- Struktura tunera: platforma dla wbudowanych źródeł sygnału TV
- MediaCas: framework dostępu warunkowego
- Menedżer zasobów tunera: usługa do zarządzania zasobami sprzętowymi dla wejścia TV, MediaCas i wbudowanego tunera
Szczegółowo opisujemy te komponenty poniżej. Poniższy diagram przedstawia szczegółowy widok architektury platformy wejściowej Android TV.
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 TV nie może bezpośrednio komunikować się z wejściami telewizora. Menedżer wejść TV identyfikuje stan wejść TV dla aplikacji TV. Więcej informacji o tych ograniczeniach znajdziesz w sekcji Menedżer wejść TV.
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 wejścia TV mają dostęp do wejściowego interfejsu HAL TV za pomocą usługi menedżera wejścia 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 danemu pakietowi.
- 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 sprzętowej aplikacji wejścia TV obsługę wielu wejść TV na usługę wejścia TV oraz dynamiczne dodawanie i usuwanie obsługiwanych wejść TV.
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 telewizji odpowiadają za wypełnianie atrybutu „gatunek nadawanej” wartością odpowiedniego standardu telewizyjnego, a w polu „Gatunek kanoniczny” jest automatycznie wypełniane prawidłowy, powiązany gatunek, z którego pochodzi 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 wejścia TV nie przechowują kanałów i programów.
Oprócz standardowych pól dotyczących kanałów i programów baza danych dostawców telewizji oferuje też pole typu BLOB (COLUMN_INTERNAL_PROVIDER_DATA
) w każdej tabeli, za pomocą której dane wejściowe telewizji mogą przechowywać dowolne dane. 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 wyszukiwalne 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 telewizyjny 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 używane przez wejścia telewizyjne oraz aplikacje systemowe, takie jak aplikacja telewizyjna. Te tabele mają 4 typy pól:
- Wyświetlanie: pola wyświetlania zawierają informacje, które aplikacje mogą chcieć udostępnić użytkownikowi, np. nazwę 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 danych wejściowych TV.
Niektóre pola, takie jakCOLUMN_INTERNAL_PROVIDER_DATA
, można dostosowywać jako pola BLOB, w których wejście TV może przechowywać dowolne metadane dotyczące ich 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 bazują na ustawieniach dostępnych 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
: widoczny tylko dla aplikacji systemowych. Ograniczenie przeglądania kanału przez aplikacje.COLUMN_BROWSABLE = 0
oznacza, że kanał nie powinien być uwzględniony 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 tutaj: 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 danego wiersza. Użytkownicy nie mają bezpośredniego dostępu do żadnych pól. Widzą tylko to, co zawiera aplikacja TV, aplikacje systemowe czy dane wejściowe telewizora.
- Każdy wiersz ma wartość
PACKAGE_NAME
, czyli pakiet (aplikację) będący właścicielem tego wiersza, sprawdzony w pytaniu, wstawieniu i aktualizacji za pomocą pliku 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ścia TV
Menedżer danych wejściowych TV udostępnia centralny interfejs API systemu dla całego systemu Android TV Input Framework. Pozwala on decydować o interakcjach między aplikacjami i wejściami telewizora 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) lub inne aplikacje zainstalowane w partycji systemowej będą miały dostęp do całej bazy danych dostawcy TV. Tego dostępu można używać 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 TV może zareagować, gdy wejście TV jest odłączone, wyświetlając je jako odłączone, uniemożliwiając jego wybór.
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 zewnętrznych wejść TV we wszystkich aplikacjach 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 ze 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 przekazywania
W tym przykładzie zaufanym urządzeniem jest wejście TV dostarczone przez producenta urządzenia, które ma pełny dostęp do dostawcy telewizji. Jako przekazujące wejście TV 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.
Przykład wbudowanego tunera
W tym przykładzie urządzenie wejściowe dostarczane przez producenta urządzenia jest zaufane i ma pełny dostęp do dostawcy telewizji.
Przykład danych wejściowych z usługi zewnętrznej
W tym przykładzie zewnętrzne wejście STB TV jest dostarczane przez stronę trzecią. Ponieważ to wejście TV nie ma bezpośredniego dostępu do przychodzącego kanału wideo HDMI, należy użyć Menedżera wejścia TV i użyć wejścia HDMI TV dostarczonego przez producenta urządzenia.
Za pomocą menedżera wejścia TV zewnętrzne wejście TV STB może komunikować się z wejściem HDMI TV i poprosić o wyświetlenie filmu na HDMI1. Dzięki temu dekoder może sterować telewizorem, a HDMI TV Input dostarczone przez producenta może renderować wideo.
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 na telewizorze, jeśli jest ona aktywna.
Dostęp do InputEvents
mogą mieć tylko systemowe wejścia telewizyjne, które mają uprawnienia systemowe RECEIVE_INPUT_EVENT
.
Zdarzenia wejściowe TV odpowiadają za określenie, które zdarzenia wejściowe mają być wykorzystane, i powinny zezwalać aplikacji TV na obsługę kluczy, których nie potrzebuje.
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 przedstawiono bardziej szczegółowo, jak KeyEvents
przekierowywane są 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 interaktywnych aplikacji na telewizorach. Aplikacja może być dostarczana za pomocą tego strumienia transportu. Po kliknięciu przycisku umożliwia to użytkownikom interakcję z aplikacjami do transmisji. Za ich pomocą możesz na przykład uzyskać dostęp do powiązanych stron internetowych lub wyników sportowych.
W sekcji Aplikacja do przesyłania komunikatów dowiesz się, jak współdziałają z nią aplikacje do przesyłania komunikatów.
W tym przykładzie:
- Aplikacja na telewizor jest aktywna i otrzymuje wszystkie klucze.
KeyEvents
(np. przycisk czerwony) jest przekazywany do aktywnego telewizora Wprowadzanie jakoInputEvents.
- Systemowe wejście TV integruje się ze stosem MHEG-5 i ma uprawnienie systemowe
RECEIVE_INPUT_EVENT
. - Po otrzymaniu kodu aktywacyjnego (np. czerwonego przycisku) wejście TV aktywuje aplikację nadawczą.
- 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 źródła 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
Aplikacja systemowa TV wyświetla użytkownikowi treści telewizyjne 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, aby wdrażać funkcje związane z producentem lub krajem, 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 źródeł sygnału telewizyjnego
- Zezwalanie urządzeniom wejściowym telewizora na inicjowanie konfiguracji kanałów
- Zarządzanie ustawieniami kontroli rodzicielskiej
- Edytuj kanały
Wyświetlanie
- 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 przewodnika po programach (EPG)
- obsługa wielu ścieżek audio i napisów;
- Wymaganie podania kodu PIN kontroli rodzicielskiej
- Zezwalanie na nakładanie interfejsu UI źródła TV dla standardu TV (HbbTV itp.)
- Wypełnianie wyników wyszukiwania dla kanałów i programów telewizyjnych
- Wyświetlanie kart łączenia aplikacji
- Obsługiwane interfejsy API przesuwania w czasie
- obsługa funkcji DVR i interfejsów API nagrywania telewizji,
Ten zestaw funkcji będzie się zwiększać wraz z nowymi wersjami Androida, na których są rozszerzone interfejsy API platformy TIF. 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, co umożliwia 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. Aplikacja referencyjna Live TV zapewnia zgodną implementację. Jeśli zastępuje ona systemową aplikację TV, producenci urządzeń muszą zapewnić podobną zgodność, aby deweloperzy mogli spełnić oczekiwania programistów na wszystkich urządzeniach z Androidem TV.
Systemowa aplikacja TV musi wyświetlać wejścia 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óżnienie kanałów wbudowanych i kanałów innych firm jest dozwolone zgodnie z definicją w sekcji Aplikacja TV w wytycznych dotyczących treści na Androida.
W następnych sekcjach opisujemy, jak aplikacja telewizji 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 Live TV zawiera menu Źródła kanałów, umożliwiające dostęp do danych wejściowych.
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 konfiguracji:
Jeśli użytkownik podejmie działanie w ramach powiadomienia, może skonfigurować źródła, jak pokazano na rysunku 10.
Oczekiwania programistów w tym zakresie znajdziesz w artykule Definiowanie usługi wejścia TV.
Dostosowywanie listy
Producenci urządzeń mogą udostępnić interfejs użytkownika umożliwiający ukrywanie niektórych kanałów i zarządzanie własnymi EPG. Dostępna jest również telewizja na żywo.
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, aby użytkownicy mogli znaleźć zainstalowane kanały.
Szukaj
Producenci muszą wdrożyć aplikację TV, aby wyświetlać wyniki wyszukiwania globalnych zapytań i zapewnić jak najlepsze wrażenia użytkownikom. Telewizja na żywo umożliwia ich wdrożenie (patrz: pozwala uzyskiwać wyniki z wejścia innych firm (wymagane do zgodności z platformą) oraz z wbudowanych wejść.
Przesunięcie 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 TV elementy sterujące odtwarzaniem, które umożliwiają 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.
Umożliwia to producentom urządzeń podłączanie ich podsystemów DVR do TIF i znaczne ograniczenie wysiłku związanego z integracją, aby włączyć lub zintegrować funkcję DVR na urządzeniu z telewizorem. Umożliwia też innym firmom oferowanie systemów DVR innych niż oryginalne, które można podłączyć do urządzenia z Androidem TV.
Oprócz nagrywania treści na żywo aplikacja TV 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 trzech trzech nagrań, aplikacja TV musi rozwiązać konflikt i powinien wyświetlić powiadomienie lub poprosić użytkownika o ustalenie priorytetu tych żądań.
Aplikacje telewizyjne mogą też stosować bardziej zaawansowane mechanizmy logiczne, np. pytać użytkownika, czy chciałby nagrać wszystkie przyszłe odcinki serialu, gdy poprosi o nagranie jednego odcinka.
Poniższy schemat przedstawia możliwości implementacji nagrywarki cyfrowej w 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 zainicjowane przez użytkownika żądanie nagrania programu telewizyjnego.
- 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 odbiera to żądanie, informuje, czy są dostępne odpowiednie zasoby i dostraja 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 TV Input Service 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 implementowaniu funkcji nagrywania w usłudze wejścia TV znajdziesz w tym artykule Nagrywanie telewizji.
Przydatne materiały
- CDD Androida oraz udokumentowane 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, a jednocześnie ominie je, wpisując kod 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 obejmuje ją weryfikator CTS.
W niektórych krajach istnieją zdefiniowane systemy oceniania, których telewizory mogą używać za pomocą interfejsu TVContentRating API. Dodatkowo dane wejściowe TV mogą rejestrować własne niestandardowe systemy oceny, co wykazuje test CTS Verifier, który wprowadza ocenę „fałszywą”. W krajach, w których istnieje standardowy system oceny, producentów urządzeń zachęcamy do łączenia kontroli rodzicielskiej w ramach interfejsu TV Input Framework z innymi mechanizmami.
Dostawca telewizji
Każdy wiersz kanału zawiera pole COLUMN_LOCKED
, które pozwala zablokować wybrane kanały bez wpisywania kodu PIN. Pole programu COLUMN_CONTENT_RATING
jest przeznaczone do wyświetlania i nie służy do egzekwowania kontroli rodzicielskiej.
Menedżer wejścia TV
Menedżer wejścia TV przechowuje wszystkie zablokowane TvContentRating
i odpowiada na isRatingBlocked()
, aby poinformować, czy treści o danym
rankingu 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, wszystkie zablokowane TvContentRating
są przechowywane przez menedżera wejścia telewizyjnego, a zablokowane kanały są przechowywane przez dostawcę telewizji.
Aby zmienić ustawienia kontroli rodzicielskiej, aplikacja na telewizor musi zadeklarować uprawnienie android.permission.MODIFY_PARENTAL_CONTROLS
.
Zachęcamy producentów urządzeń do:
- Wykonaj test CTS Verifier dotyczący kontroli rodzicielskiej na przykładzie aplikacji referencyjnej Live TV, aby zademonstrować wymagania dotyczące zgodności.
- Użyj aplikacji Telewizja na żywo jako odniesienia do własnej aplikacji telewizyjnej: w szczególności zobacz źródła ContentRatingsManager i RatingSystemsFragment oraz sposób obsługi niestandardowych ocen.
HDMI-CEC
Złącze HDMI-CEC umożliwia sterowanie jednym urządzeniem za pomocą jednego pilota, co pozwala sterować kilkoma urządzeniami w kinie domowym. Android TV używa go do przyspieszania konfiguracji i ułatwiania zdalnego sterowania różnymi wejściami 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 dostępnych usług Androida, w tym z usług 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żer wejścia TV generuje intencję dla aplikacji TV, aby przełączyć źródło.
- 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 źródeł telewizora przekazuje te informacje do wejścia HDMI telewizora.
- Wejście HDMI telewizora prosi o ustawienie powierzchni paska bocznego.
- Usługa menedżera wejścia TV generuje odpowiednie polecenie sterowania routingiem z powrotem do usługi sterowania HDMI, gdy powierzchnia jest ustawiona.
Wytyczne dotyczące integracji z telewizorami
Aplikacja do przesyłania wiadomości
Każdy kraj ma specyficzne wymagania dotyczące transmisji (MHEG, teletekst, HbbTV itp.), dlatego producenci muszą 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 oczekuje, że producenci urządzeń będą używać integratorów systemów lub rozwiązań Androida w regionalnych pakietach TV, przekazywać interfejsy do pakietów oprogramowania TV lub przekazywać niezbędny kod klucza, aby wchodzić w interakcje z starymi pakietami.
Oto jak aplikacja do przesyłania strumieniowego i aplikacja na telewizor współdziałają:
- 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. czerwonego przycisku) 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.