Rama wejścia telewizyjnego

Ikona Android TV HAL

Struktura wprowadzania Android TV (TIF) upraszcza dostarczanie treści na żywo do Android TV. Android TIF zapewnia producentom standardowy interfejs API umożliwiający tworzenie modułów wejściowych do sterowania platformą Android TV oraz umożliwia wyszukiwanie telewizji na żywo i rekomendacje za pośrednictwem metadanych publikowanych przez TV Wejście.

Ramy te nie mają na celu wdrożenia standardów telewizyjnych ani wymogów regionalnych, ale ułatwiają producentom urządzeń spełnienie regionalnych standardów transmisji telewizji cyfrowej bez konieczności ich ponownego wdrażania. Dokumentacja w tej sekcji może być również przydatna dla zewnętrznych twórców aplikacji, którzy chcą tworzyć niestandardowe wejścia telewizyjne.

składniki

Implementacja platformy wejściowej Android TV zawiera menedżera wejścia telewizyjnego. TIF współpracuje z aplikacją TV, aplikacją systemową, której nie można zastąpić aplikacją innej firmy, aby uzyskać dostęp do kanałów wbudowanych i tunera IP. Aplikacja TV komunikuje się z modułami wejścia TV dostarczonymi przez producenta urządzenia lub innych dostawców za pośrednictwem Menedżera wejść TV.

Struktura wejścia telewizyjnego składa się z:

  • Dostawca telewizji ( com.android.providers.tv.TvProvider ): baza danych kanałów, programów i powiązanych uprawnień
  • Aplikacja telewizyjna ( com.android.tv.TvActivity ): aplikacja obsługująca interakcję z użytkownikiem
  • Menedżer wejść TV ( android.media.tv.TvInputManager ): umożliwia komunikację wejść telewizora z aplikacją TV
  • Wejście TV: aplikacja reprezentująca fizyczne lub wirtualne tunery i porty wejściowe
  • Wejście TV HAL (moduł tv_input ): definicja sprzętu, która po zaimplementowaniu umożliwia systemowym wejśćom telewizyjnym dostęp do sprzętu specyficznego dla telewizora
  • 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: framework dla wejścia telewizyjnego z wbudowanym tunerem
  • MediaCas: platforma dostępu warunkowego
  • Menedżer zasobów tunera: usługa zarządzania zasobami sprzętowymi dla wejścia TV, MediaCas i wejścia wbudowanego tunera

Komponenty te zostały szczegółowo omówione poniżej. Szczegółowy widok architektury platformy wejściowej Android TV można znaleźć na poniższym diagramie.

Przegląd architektury Androida TIF
Rysunek 1. Architektura platformy wejściowej Android TV (TIF).

Przepływ

Oto jak realizowana jest architektura:

  1. Użytkownik widzi i wchodzi w interakcję z aplikacją TV – aplikacją systemową, której nie można zastąpić aplikacją innej firmy.
  2. Aplikacja TV wyświetla zawartość AV z wejścia TV.
  3. Aplikacja TV nie może komunikować się bezpośrednio z wejściami telewizora. Menedżer wejść TV identyfikuje stan wejść TV dla aplikacji TV. Aby uzyskać więcej informacji na temat tych ograniczeń, zobacz Menedżer wejść TV poniżej.

Uprawnienia

  • Tylko wejścia TV signatureOrSystem i aplikacja TV mają pełny dostęp do bazy danych dostawcy telewizji i mogą odbierać zdarzenia KeyEvent.
  • Tylko systemowe wejścia TV mogą uzyskać dostęp do wejścia TV HAL za pośrednictwem usługi Menedżer wejść TV. Dostęp do wejść TV można uzyskać indywidualnie poprzez sesje Menedżera wejść TV.
  • Wejścia telewizyjne innych firm mają zablokowany pakietowy dostęp do bazy danych dostawcy telewizji i mogą ODCZYTAĆ/ZAPISAĆ tylko do pasujących wierszy pakietu.
  • Wejścia telewizyjne innych firm mogą wyświetlać własną treść lub zawartość z wejść telewizyjnych typu passthrough producenta urządzenia, takich jak HDMI1. Nie mogą wyświetlać treści z nieprzejściowych wejść telewizyjnych, takich jak tuner wbudowany lub IPTV.
  • Pozwolenie TV_INPUT_HARDWARE dla aplikacji sprzętowego wejścia TV sygnalizuje usłudze Menedżera wejścia TV, aby powiadomiła usługę wejścia TV podczas rozruchu w celu wywołania usługi Menedżera wejścia TV i dodania jej wejść TV. To uprawnienie umożliwia aplikacji sprzętowego wejścia TV obsługę wielu wejść TV na usługę wejścia TV, a także dynamiczne dodawanie i usuwanie obsługiwanych wejść TV.

Dostawca telewizji

Baza danych dostawców telewizji przechowuje kanały i programy z wejść telewizyjnych. Dostawca telewizji publikuje również powiązane uprawnienia i zarządza nimi, dzięki czemu wejścia telewizyjne mogą oglądać tylko swoje własne nagrania. Na przykład określone wejście telewizyjne może oglądać tylko kanały i programy, które dostarczyło, i nie ma dostępu do kanałów i programów innych wejść telewizyjnych.

Dostawca telewizji wewnętrznie przypisuje „gatunek transmisji” do „gatunku kanonicznego”. Wejścia telewizyjne są odpowiedzialne za wypełnienie „gatunku transmisji” wartością z podstawowego standardu transmisji, a pole „gatunek kanoniczny” zostanie automatycznie wypełnione poprawnym powiązanym gatunkiem z android.provider.TvContract.Genres . Na przykład w przypadku standardu nadawania ATSC A/65 i programu z gatunkiem 0x25 (co oznacza „Sport”), wejście TV wypełni „gatunek transmisji” ciągiem „Sport”, a Dostawca telewizji wypełni pole „gatunek kanoniczny” wartością mapowana wartość android.provider.TvContract.Genres.SPORTS .

Szczegółowy widok dostawcy telewizji znajdziesz na poniższym schemacie.

Dostawca Androida TV
Rysunek 2. Dostawca Android TV

Tylko aplikacje znajdujące się w uprzywilejowanej partycji systemowej mogą odczytywać całą bazę danych dostawcy telewizji.

Przejściowe wejścia telewizyjne nie przechowują kanałów i programów.

Oprócz standardowych pól dla kanałów i programów, baza danych dostawców telewizji oferuje również pole typu BLOB, COLUMN_INTERNAL_PROVIDER_DATA , w każdej tabeli, której wejścia telewizyjne mogą używać do przechowywania dowolnych danych. Te dane BLOB mogą zawierać informacje niestandardowe, takie jak częstotliwość powiązanego tunera i mogą być dostarczone w buforze protokołu lub w innej formie. Pole z możliwością przeszukiwania jest dostępne, aby uniemożliwić wyszukiwanie niektórych kanałów (np. w celu spełnienia wymagań obowiązujących w danym kraju w zakresie ochrony treści).

Przykłady pól bazy danych

Dostawca telewizji obsługuje dane strukturalne w tabelach kanałów ( android.provider.TvContract.Channels ) i programów ( android.provider.TvContract.Programs ). Tabele te są wypełniane i dostępne dla wejść TV oraz aplikacji systemowych, takich jak aplikacja TV. Tabele te mają cztery typy pól:

  • Wyświetlanie: pola wyświetlacza zawierają informacje, które aplikacje mogą chcieć udostępnić użytkownikowi, np. nazwę 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 ), identyfikator oryginalnej sieci ( COLUMN_ORIGINAL_NETWORK_ID ) i identyfikator usługi ( COLUMN_SERVICE_ID ).
  • Dane wewnętrzne : Pola przeznaczone do niestandardowego wykorzystania wejść TV.
    Niektóre pola, np. COLUMN_INTERNAL_PROVIDER_DATA , to konfigurowalne pola BLOB, w których wejście telewizyjne może przechowywać dowolne metadane dotyczące kanału lub programu.
  • Flaga: Pola flagi 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 ustawień na kanale.
    • COLUMN_SEARCHABLE : Ograniczenie wyszukiwania do 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 podawania kodu PIN. COLUMN_LOCKED = 1 oznacza, że ​​kanał powinien być chroniony przez kontrolę rodzicielską.

Bardziej wyczerpującą listę pól można znaleźć 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 wyświetla aplikacja TV, aplikacje systemowe lub wejścia TV.

  • W każdym wierszu znajduje się PACKAGE_NAME , pakiet (aplikacja) będący właścicielem tego wiersza, zaznaczony w Query, Insert, Update poprzez TvProvider.java. Wejście telewizyjne może uzyskać dostęp tylko do informacji, które zapisał i jest odgrodzone od informacji dostarczanych przez inne wejścia telewizyjne.
  • Uprawnienia do ODCZYTU, ZAPISU poprzez plik AndroidManifest.xml (wymaga zgody użytkownika) w celu określenia dostępnych kanałów.
  • Tylko aplikacje signatureOrSystem mogą uzyskać pozwolenie ACCESS_ALL_EPG_DATA na dostęp do całej bazy danych.

Menedżer wejść telewizyjnych

Menedżer wejścia TV zapewnia centralny interfejs API systemu dla ogólnego środowiska wprowadzania Android TV. Steruje interakcją między aplikacjami i wejściami telewizora oraz zapewnia funkcję kontroli rodzicielskiej. Sesje Menedżera wejść TV muszą być tworzone jeden do jednego z wejściami TV. Menedżer wejść TV umożliwia dostęp do zainstalowanych wejść TV, dzięki czemu aplikacje mogą:

  • Wyświetl listę wejść telewizora 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 przez nią do bazy danych dostawcy telewizji, z wyjątkiem przejściowych wejść telewizyjnych, do których można dostroić za pomocą TvContract.buildChannelUriForPassthroughInput() . Wejście TV może mieć również ustawioną głośność. Wejścia TV dostarczone i podpisane przez producenta urządzenia (aplikacje sygnowane) lub inne aplikacje zainstalowane w 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 , aby zostać oddzwonionym w przypadku zmiany stanu wejścia TV lub dodania lub usunięcia wejścia TV. Na przykład aplikacja telewizyjna może zareagować na rozłączenie wejścia telewizyjnego, wyświetlając je jako odłączone i uniemożliwiając jego wybór.

Menedżer wejść TV oddziela komunikację pomiędzy aplikacją TV a wejściami TV. Standardowy interfejs Menedżera wejść TV i wejścia TV umożliwia wielu producentom urządzeń tworzenie własnych aplikacji telewizyjnych, jednocześnie ułatwiając działanie wejść telewizyjnych innych firm we wszystkich aplikacjach telewizyjnych.

Wejścia telewizyjne

Wejścia telewizyjne to aplikacje na Androida w tym sensie, że mają plik AndroidManifest.xml i są zainstalowane (przez Play, preinstalowane lub ładowane z boku). Android TV obsługuje preinstalowane aplikacje systemowe, aplikacje podpisane przez producenta urządzenia i wejścia telewizyjne innych firm.

Niektóre wejścia, takie jak wejście HDMI lub wejście wbudowanego tunera, mogą być dostarczane wyłącznie przez producenta, ponieważ współpracują bezpośrednio z podstawowym sprzętem. Inne, takie jak IPTV, funkcja zmiany miejsca i zewnętrzny STB, mogą być dostarczane przez strony trzecie jako pliki APK w sklepie Google Play. Po pobraniu i zainstalowaniu nowe wejście można wybrać w aplikacji TV.

Przykład wejścia przechodzącego

Wejście systemu Android TV
Rysunek 3. Wejście systemu Android TV

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 przekazujących, użyj metody narzędzia 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

Wbudowane wejście tunera Android TV
Rysunek 4. Wejście wbudowanego tunera Android TV

W tym przykładzie wbudowany tuner wejściowy TV dostarczony przez producenta urządzenia jest zaufany i ma pełny dostęp do dostawcy telewizji.

Przykład danych wejściowych innej firmy

Dane wejściowe innych firm w systemie Android TV
Rysunek 5. Dane wejściowe innych firm w systemie Android TV

W tym przykładzie zewnętrzne wejście TV STB jest dostarczane przez stronę trzecią. Ponieważ to wejście TV nie ma bezpośredniego dostępu do przychodzącego sygnału wideo HDMI, musi przejść przez Menedżera wejść TV i korzystać z wejścia HDMI TV dostarczonego przez producenta urządzenia.

Poprzez Menedżera wejść TV zewnętrzne wejście TV STB może komunikować się z wejściem TV HDMI i prosić o wyświetlenie wideo na HDMI1. Zatem wejście telewizyjne STB może sterować telewizorem, podczas gdy wejście telewizyjne HDMI dostarczone przez producenta renderuje wideo.

Przykład obrazu w obrazie (PIP).

Kluczowe zdarzenia na Androidzie TV
Rysunek 6. Zdarzenia kluczowe Android TV

Powyższy diagram pokazuje, w jaki sposób przyciski pilota 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ętowy dostarczony przez producenta urządzenia, konwertujący sprzętowe kody skanujące na InputReader klawiszy Androida i przekazujący je do standardowych funkcji InputDispatcher potoku wejściowego Androida . Te z kolei wyzwalają zdarzenia w aplikacji telewizyjnej, jeśli jest ona aktywna.

Tylko systemowe wejścia telewizyjne mogą odbierać InputEvents i tylko wtedy, gdy mają uprawnienia systemowe RECEIVE_INPUT_EVENT . Wejście TV jest odpowiedzialne za określenie, które zdarzenia wejściowe mają zostać wykorzystane, i powinno pozwolić aplikacji telewizyjnej na obsługę kluczy, których nie potrzebuje.

Aplikacja TV odpowiada za informację, który system wejścia TV jest aktywny, czyli wybrany przez użytkownika, a także za rozróżnianie przychodzących KeyEvents i kierowanie ich do właściwej sesji Menedżera wejść TV, wywołując funkcję dispatchInputEvent() w celu przekazania zdarzenia do powiązanego wejścia TV .

Przykład wejścia MHEG-5

Na poniższym diagramie przedstawiono bardziej szczegółowy widok sposobu kierowania KeyEvents przez plik TIF systemu Android.

Przykład czerwonego przycisku Android TV
Rysunek 7. Przykład czerwonego przycisku Android TV

Przedstawia działanie aplikacji z czerwonym przyciskiem, popularnej w Europie, umożliwiającej użytkownikom dostęp do interaktywnych aplikacji na telewizorach. Aplikacja może zostać dostarczona za pośrednictwem tego strumienia transportowego. Kliknięcie przycisku umożliwia użytkownikom interakcję z aplikacjami do transmisji. Możesz na przykład używać 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 wchodzą w interakcję z aplikacją telewizyjną.

W tym przykładzie:

  1. Aplikacja telewizyjna jest aktywna i odbiera wszystkie klucze.
  2. KeyEvents (np. czerwony przycisk) są przekazywane do aktywnego wejścia telewizora jako InputEvents.
  3. Systemowe wejście TV integruje się ze stosem MHEG-5 i posiada uprawnienia systemowe RECEIVE_INPUT_EVENT .
  4. Po otrzymaniu kodu aktywacyjnego (np. czerwonego przycisku) wejście TV aktywuje aplikację do transmisji.
  5. Wejście telewizyjne wykorzystuje KeyEvents jako InputEvents , a aplikacja rozgłaszania jest w centrum uwagi i obsługuje InputEvents do czasu ich zwolnienia.

Uwaga : wejścia telewizorów innych firm nigdy nie otrzymują kluczy.

Wejście telewizyjne HAL

Wejście TV HAL pomaga w opracowywaniu wejść telewizyjnych w celu uzyskania dostępu do sprzętu specyficznego dla telewizora. Podobnie jak w przypadku innych HAL dla Androida, HAL wejścia TV ( tv_input ) jest dostępny w drzewie źródeł AOSP, a sprzedawca rozwija jego implementację.

Uwaga : począwszy od Androida 14, interfejs wejściowy HAL telewizora jest definiowany za pomocą AIDL .

Aplikacja telewizyjna

Systemowa aplikacja telewizyjna prezentuje użytkownikowi treści telewizyjne na żywo. Wraz z platformą Android dostępna jest referencyjna aplikacja telewizyjna (TV na żywo), z której producenci urządzeń mogą korzystać w niezmienionej postaci, dostosowywać ją, rozszerzać lub wymieniać. Kod źródłowy jest dostępny w projekcie Android Open Source Project. Aby rozpocząć korzystanie z niego, zapoznaj się z artykułem dotyczącym aplikacji Reference TV .

Producenci urządzeń mogą rozszerzać swoje aplikacje telewizyjne w celu wdrożenia funkcji specyficznych dla producenta urządzenia lub kraju, jednak nie wchodzi to w zakres TIF ani referencyjnej aplikacji telewizyjnej.

Systemowa aplikacja telewizyjna musi obsługiwać co najmniej następujące zadania:

Instalacja i konfiguracja

  • Automatyczne wykrywanie wejść telewizora
  • Pozwól, aby wejścia TV rozpoczęły konfigurację kanałów
  • Kontroluj ustawienia rodzicielskie
  • Edytuj kanały

Przeglądanie

  • Dostęp i nawigacja po wszystkich kanałach telewizyjnych
  • Uzyskaj dostęp do paska informacji o programie telewizyjnym
  • Wyświetl dane elektronicznego przewodnika po programach (EPG).
  • Obsługa wielu ścieżek audio i napisów
  • Podaj wyzwanie PIN-u kontroli rodzicielskiej
  • Zezwalaj na nakładkę interfejsu wejścia TV dla standardu telewizyjnego (HbbTV itp.)
  • Wypełniaj wyniki wyszukiwania kanałów i programów telewizyjnych
  • Wyświetl karty łączące aplikacje
  • Obsługa interfejsów API z przesunięciem w czasie
  • Obsługa funkcji DVR i obsługa interfejsów API nagrywania TV

Ten zestaw funkcji będzie się zwiększał wraz z nowymi wersjami Androida, w których rozszerzono interfejsy API TIF platformy. CTS Verifier zapewnia pokrycie testów zgodności.

Obsługa wejść telewizyjnych innych firm

Android TV udostępnia interfejsy API dla programistów 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 telewizyjna ma pewne obowiązki w zakresie udostępniania użytkownikowi wejść i kanałów telewizyjnych innych firm. Referencyjna aplikacja Live TV zapewnia kompatybilną implementację; w przypadku wymiany systemowej aplikacji TV producenci urządzeń muszą upewnić się, że ich własne aplikacje zapewniają podobną kompatybilność, aby spełnić oczekiwania programistów na wszystkich urządzeniach z systemem Android TV.

Systemowa aplikacja telewizyjna musi udostępniać dane wejściowe innych firm wraz z domyślną usługą telewizji na żywo na urządzeniu. Obietnicą interfejsów API programistów jest to, że użytkownicy będą mogli znaleźć kanały (po zainstalowaniu) w ramach standardowego doświadczenia telewizyjnego.

Dozwolone jest wizualne rozróżnienie kanałów wbudowanych od kanałów innych firm, zgodnie z definicją w sekcji aplikacji telewizyjnej na płycie CD z systemem Android.

W poniższych sekcjach pokazano, jak aplikacja Live TV spełnia wymagania CDD.

Nowa konfiguracja 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ść zapewnia czynność konfiguracyjną, która umożliwia użytkownikowi skonfigurowanie kanałów, podanie danych logowania i inne działania. Systemowa aplikacja telewizyjna musi zapewniać użytkownikowi możliwość aktywacji tej czynności konfiguracyjnej, dlatego CDD wymaga, aby dane wejściowe innych firm wprowadzały minimalne czynności nawigacyjne z dala od głównej aplikacji telewizyjnej.

Referencyjna aplikacja Live TV udostępnia menu Źródła kanałów umożliwiające dostęp do wejść.

Przejdź do ustawień
Rysunek 8. Przejdź do Ustawień .

Przejdź do źródła kanału w Ustawieniach
Rysunek 9. Przejdź do Źródła kanałów w Ustawieniach.

Wybierz źródło z listy.
Rysunek 10. Wybierz źródło z listy.

Dodaj kanały ze swojego źródła
Rysunek 11. Dodaj kanały ze swojego źródła.

Dodatkowo, po zainstalowaniu nowego TvInput, w górnej części menu aplikacji TV wyświetlana jest karta powiadomień, która przenosi użytkownika bezpośrednio do ustawień:

Powiadomienie informujące o dostępności nowych źródeł kanałów.
Rysunek 12. Powiadomienie informujące o dostępności nowych źródeł kanałów.

Jeśli użytkownik podejmie działanie poprzez powiadomienie, może skonfigurować źródła, jak pokazano na rysunku 10.

Zobacz Definiowanie usługi wejścia telewizyjnego, aby zapoznać się z oczekiwaniami programistów w tym obszarze.

Dostosuj listę kanałów

Producenci urządzeń mogą udostępnić interfejs użytkownika umożliwiający ukrycie niektórych kanałów i umożliwienie użytkownikom zarządzania własnymi EPG. Telewizja na żywo obejmuje tę funkcję.

Otwórz listę kanałów w Ustawieniach.
Rysunek 13. Otwórz listę kanałów w Ustawieniach .

Dostosuj swoją listę kanałów.
Rysunek 14. Dostosuj listę kanałów.

EPG

Zewnętrzni twórcy danych wejściowych muszą mieć pewność, że użytkownicy będą mogli łatwo nawigować do ich kanałów podczas ogólnego użytkowania, na wszystkich zgodnych urządzeniach z Android TV.

Kanały pochodzące z źródeł zewnętrznych muszą być prezentowane w ramach standardowego EPG dotyczącego telewizji na żywo w urządzeniu. Można zastosować separację wizualną lub osobne kategorie dla kanałów innych firm (zobacz sekcję dotyczącą aplikacji telewizyjnych na płycie CD z systemem Android) — najważniejsze jest to, aby użytkownicy mogli znaleźć zainstalowane kanały.

Producenci muszą wdrożyć aplikację telewizyjną, aby uwzględniała wyniki wyszukiwania dla żądań wyszukiwania globalnego, aby zapewnić najlepszą wygodę użytkowania. Telewizja na żywo zapewnia implementację (zobacz , która zapewnia wyniki z danych wejściowych stron trzecich (wymagane do zapewnienia zgodności platformy) oraz z wejść wbudowanych.

Przesunięcie czasu

W przypadku urządzeń z systemem Android 6.0 i nowszym aplikacja telewizyjna musi obsługiwać interfejsy API zmiany czasu platformy Android. Ponadto producenci muszą wdrożyć w aplikacji telewizyjnej elementy sterujące odtwarzaniem, które umożliwią użytkownikom wstrzymywanie, wznawianie, przewijanie do tyłu i do przodu.

W przypadku wejść telewizora obsługujących przesunięcie w czasie aplikacja telewizyjna musi wyświetlać elementy sterujące odtwarzaniem.

Sterowanie odtwarzaniem
Rysunek 15. Sterowanie odtwarzaniem

DVR

W przypadku urządzeń z systemem Android 7.0 i nowszym aplikacja telewizyjna musi obsługiwać interfejsy API nagrywania telewizji w środowisku Android, aby móc obsługiwać, wyświetlać i odtwarzać nagrane programy.

Umożliwia to producentom urządzeń podłączenie podsystemów DVR do TIF i radykalne zmniejszenie wysiłku związanego z integracją potrzebną do włączenia lub zintegrowania funkcji DVR z urządzeniem telewizyjnym. Umożliwia także 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 telewizyjna obsługuje również konflikty zasobów. Przykładowo, jeśli urządzenie posiada dwa tunery, może nagrywać dwa programy jednocześnie. Jeśli użytkownik poprosi o nagranie trzech, aplikacja telewizyjna musi poradzić sobie z konfliktem i powinna wyświetlić powiadomienie lub poprosić użytkownika o zaplanowanie priorytetu dla tych żądań.

Aplikacje telewizyjne mogą także implementować bardziej wyrafinowaną logikę, na przykład pytanie użytkownika, czy chce nagrać wszystkie przyszłe odcinki serialu, gdy poprosi o nagranie jednego odcinka.

Zobacz poniższy diagram, aby zapoznać się z możliwą implementacją DVR w Android TV.

Cyfrowe nagrywanie wideo w Android TV
Rysunek 16. Cyfrowe nagrywanie wideo w Android TV

  1. Usługa wejścia telewizyjnego informuje aplikację telewizyjną o liczbie dostępnych tunerów, dzięki czemu aplikacja telewizyjna może obsłużyć ewentualny konflikt zasobów.
  2. Aplikacja telewizyjna odbiera zainicjowane przez użytkownika żądanie nagrania programu telewizyjnego.
  3. Aplikacja TV przechowuje harmonogram nagrywania w swojej wewnętrznej bazie danych.
  4. Kiedy nadejdzie czas nagrywania, aplikacja telewizyjna przesyła żądanie dostrojenia kanału powiązanego z nagraniem.
  5. Usługa wejścia telewizyjnego odbiera to żądanie, odpowiada, czy dostępne są odpowiednie zasoby, i dostraja kanał.
  6. Następnie aplikacja telewizyjna przekazuje żądanie rozpoczęcia nagrywania do Menedżera wejść TV.
  7. Usługa wejścia telewizyjnego otrzymuje to żądanie i rozpoczyna nagrywanie.
  8. Usługa wejścia TV przechowuje rzeczywiste dane wideo w swojej pamięci, która może być pamięcią zewnętrzną lub chmurą.
  9. Kiedy nadejdzie czas zakończenia nagrywania, aplikacja TV przekazuje żądanie zatrzymania nagrywania do Menedżera wejść TV.
  10. Gdy usługa wejścia telewizyjnego odbierze żą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 wdrażania funkcji nagrywania w usłudze wejścia telewizyjnego, zobacz ten artykuł dotyczący nagrywania telewizji .

Przydatne zasoby

  • Ostatecznymi odniesieniami są CDD systemu Android i udokumentowane interfejsy API programistów.
  • CTS Verifier korzysta z interfejsów API w ramach programu testowania zgodności. Porównanie tego z telewizją na żywo może być przydatnym sposobem sprawdzenia EPG, wyszukiwania, kontroli rodzicielskiej i innych wymagań w kontekście danych wejściowych stron trzecich.
  • Zobacz Definiowanie usługi wejścia telewizyjnego, aby zapoznać się z oczekiwaniami programistów w tym obszarze.

Kontrola rodzicielska

Kontrola rodzicielska pozwala użytkownikowi blokować niepożądane kanały i programy, ale ominąć blokadę poprzez wprowadzenie kodu PIN.

Odpowiedzialność za funkcję kontroli rodzicielskiej jest dzielona pomiędzy Aplikację TV, usługę Menedżer wejścia TV, Dostawcę telewizji i Wejście TV.

Kontrola rodzicielska jest obowiązkowa i zapewnia ją CTS Verifier.

W wielu krajach zdefiniowano systemy oceny, z których mogą korzystać wejścia telewizyjne za pośrednictwem interfejsu API TVContentRating . Dodatkowo, wejścia TV mogą rejestrować własne, niestandardowe systemy oceny, jak wykazał test CTS Verifier, który wprowadza „fałszywą” ocenę. W krajach, w których istnieje standardowy system klasyfikacji, zachęca się producentów urządzeń do łączenia kontroli rodzicielskiej Ramy wejścia telewizyjnego z innymi mechanizmami, które mogą obejmować.

Dostawca telewizji

Każdy wiersz kanału zawiera pole COLUMN_LOCKED , które służy do blokowania oglądania określonych kanałów bez wprowadzania kodu PIN. Pole programu COLUMN_CONTENT_RATING jest przeznaczone do wyświetlania i nie służy do egzekwowania kontroli rodzicielskiej.

Menedżer wejść telewizyjnych

Menedżer wejść TV przechowuje każdą zablokowaną TvContentRating i odpowiada na isRatingBlocked() , aby poinformować, czy treść o podanej ocenie powinna zostać zablokowana.

Wejście telewizyjne

Wejście TV sprawdza, czy bieżąca treść powinna zostać zablokowana, wywołując funkcję isRatingBlocked() w Menedżerze wejść TV, gdy zmieniła się ocena wyświetlanej treści (w przypadku zmiany programu lub kanału) lub zmieniły się ustawienia kontroli rodzicielskiej (w ACTION_BLOCKED_RATINGS_CHANGED i ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) . Jeśli zawartość powinna zostać zablokowana, wejście TV wyłącza dźwięk i obraz i powiadamia aplikację telewizyjną, że bieżąca treść jest blokowana, wywołując notifyContentBlocked(TvContentRating) . Jeśli zawartość nie powinna być blokowana, wejście TV włącza dźwięk i obraz oraz powiadamia aplikację TV, że bieżąca treść jest dozwolona, ​​wywołując notifyContentAllowed() .

Aplikacja telewizyjna

Aby honorować interfejsy API kontroli rodzicielskiej i w ten sposób stworzyć kompatybilną platformę, systemowa aplikacja telewizyjna musi zapewniać użytkownikom możliwość zarządzania kontrolą rodzicielską, w tym w przypadku wszelkich niestandardowych ocen zarejestrowanych przez określone aplikacje.

Aplikacja telewizyjna wyświetla interfejs użytkownika z kodem PIN, gdy zostanie powiadomiona przez wejście telewizyjne, że bieżąca treść jest zablokowana lub gdy użytkownik spróbuje obejrzeć zablokowany kanał.

Aplikacja TV nie przechowuje bezpośrednio ustawień kontroli rodzicielskiej. Kiedy użytkownik zmienia ustawienia kontroli rodzicielskiej, każda zablokowana TvContentRating jest przechowywana przez Menedżera wejść telewizyjnych, a zablokowane kanały są przechowywane przez dostawcę telewizji.

Aby zmienić ustawienia kontroli rodzicielskiej, aplikacja telewizyjna musi zadeklarować uprawnienia android.permission.MODIFY_PARENTAL_CONTROLS .

Producentów urządzeń zachęca się do:

  • Wykonaj test kontroli rodzicielskiej CTS Verifier w porównaniu z referencyjną aplikacją Live TV, aby zademonstrować wymagania dotyczące zgodności.
  • Użyj aplikacji Live TV jako punktu odniesienia dla własnej aplikacji telewizyjnej: w szczególności zobacz źródła ContentRatingsManager i RatingSystemsFragment oraz sposób, w jaki radzą sobie z niestandardowymi ocenami.

HDMI-CEC

Dzięki HDMI-CEC jedno urządzenie może sterować drugim, dzięki czemu jeden pilot może sterować 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 telewizora za pośrednictwem centralnej aplikacji telewizyjnej. Może na przykład przełączać wejścia, włączać i 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 lekką powłoką HAL Android TV, pomijając bardziej złożoną logikę biznesową. Zapewniając standardową implementację, Android stara się złagodzić problemy ze zgodnością, redukując fragmentaryczne implementacje i selektywną obsługę funkcji. Usługa sterowania HDMI wykorzystuje istniejące usługi systemu Android, w tym wejście i zasilanie.

Oznacza to, że istniejące implementacje HDMI-CEC będą musiały zostać przeprojektowane, aby współpracowały z Androidem TIF. Zalecamy, aby platforma sprzętowa zawierała mikroprocesor do odbierania zasilania CEC i innych poleceń.

Integracja CEC w Android TV
Rysunek 17. Integracja CEC w Android TV

  1. Magistrala CEC otrzymuje polecenie od aktualnie aktywnego źródła, aby przełączyć się na inne źródło.
  2. Sterownik przekazuje polecenie do HAL HDMI-CEC.
  3. HAL powiadamia wszystkich ActiveSourceChangeListeners .
  4. Usługa sterowania HDMI jest powiadamiana o zmianie źródła za pośrednictwem ActiveSourceChangeListener .
  5. Usługa Menedżer wejścia TV generuje dla aplikacji TV zamiar przełączenia źródła.
  6. Następnie aplikacja TV tworzy sesję menedżera wejścia TV dla przełączanego wejścia TV i wywołuje setMain w tej sesji.
  7. Sesja Menedżera wejść TV przekazuje te informacje do wejścia HDMI TV.
  8. Wejście HDMI TV żąda ustawienia powierzchni pasma bocznego.
  9. Usługa Menedżera wejść TV generuje odpowiednie polecenie sterowania routingiem z powrotem do usługi sterowania HDMI po ustawieniu powierzchni.

Wytyczne dotyczące integracji telewizji

Aplikacja do transmisji

Ponieważ każdy kraj ma specyficzne wymagania dotyczące transmisji (MHEG, teletekst, HbbTV i inne), oczekuje się, że producenci dostarczą własne rozwiązania dla aplikacji nadawczej, na przykład:

  • MHEG: stos natywny
  • Teletekst: natywny stos
  • HbbTV: rozwiązanie HbbTV firmy Vewd Software

W wersji Androida L Android TV oczekuje od producentów urządzeń korzystania z integratorów systemów lub rozwiązań Androida dla regionalnych stosów telewizyjnych, przekazywania powierzchni stosom oprogramowania telewizyjnego lub przekazywania niezbędnego kodu klucza do interakcji ze starszymi stosami.

Oto sposób interakcji aplikacji do transmisji i aplikacji telewizyjnej:

  1. Aplikacja telewizyjna jest aktywna i odbiera wszystkie klucze.
  2. Aplikacja TV przekazuje klucze (np. czerwony przycisk) do urządzenia wejściowego TV.
  3. Urządzenie wejściowe TV integruje się wewnętrznie ze starszym zestawem telewizyjnym.
  4. Po otrzymaniu kodu aktywacyjnego (np. czerwonego przycisku) urządzenie wejściowe TV aktywuje aplikacje do transmisji.
  5. Aplikacja do transmisji skupia uwagę w aplikacji telewizyjnej i obsługuje działania użytkownika.

W przypadku wyszukiwania/rekomendacji głosowych aplikacja nadawcza może obsługiwać wyszukiwanie głosowe w aplikacji.