Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

TV Input Framework

Android TV HAL-Symbol

Das Android TV Input Framework (TIF) vereinfacht die Bereitstellung von Live-Inhalten an Android TV. Das Android TIF bietet Herstellern eine Standard-API zum Erstellen von Eingabemodulen zur Steuerung von Android TV und ermöglicht die Live-TV-Suche und -Empfehlungen über Metadaten, die vom TV-Eingang veröffentlicht werden.

Das Framework versucht nicht, TV-Standards oder regionale Anforderungen umzusetzen, erleichtert es Geräteherstellern jedoch, regionale Standards für digitales Fernsehen ohne erneute Implementierung zu erfüllen. Die Dokumentation in diesem Abschnitt kann auch für App-Entwickler von Drittanbietern nützlich sein, die benutzerdefinierte TV-Eingänge erstellen möchten.

Komponenten

Die Implementierung des Android TV Input Framework enthält einen TV Input Manager. Das TIF funktioniert mit der TV-App, einer System-App, die nicht durch eine Drittanbieter-App ersetzt werden kann, um auf integrierte und IP-Tunerkanäle zuzugreifen. Die TV-App kommuniziert mit TV-Eingangsmodulen, die vom Gerätehersteller oder anderen Parteien über den TV-Eingabemanager bereitgestellt werden.

Das TV Input Framework besteht aus:

  • TV-Anbieter ( com.android.providers.tv.TvProvider ): Eine Datenbank mit Kanälen, Programmen und zugehörigen Berechtigungen
  • TV-App ( com.android.tv.TvActivity ): Die App, die die Benutzerinteraktion verwaltet
  • TV Input Manager ( android.media.tv.TvInputManager ): Ermöglicht den TV Inputs die Kommunikation mit der TV App
  • TV-Eingang: Eine App, die physische oder virtuelle Tuner und Eingangsanschlüsse darstellt
  • TV-Eingang HAL (Modul tv_input ): Eine Hardwaredefinition, mit der System-TV-Eingänge bei der Implementierung auf TV-spezifische Hardware zugreifen können
  • Kindersicherung: Die Technologie zum Blockieren von Kanälen und Programmen
  • HDMI-CEC: Die Technologie zur Fernsteuerung verschiedener Geräte über HDMI

Diese Komponenten werden im Folgenden ausführlich behandelt. In der folgenden Abbildung finden Sie eine detaillierte Ansicht der Android TV Input Framework-Architektur.

Übersicht über die Android TIF-Architektur
Abbildung 1. TIF-Architektur (Android TV Input Framework)

Fließen

So wird die Architektur ausgeübt:

  1. Der Benutzer sieht und interagiert mit der TV-App, einer System-App, die nicht durch eine Drittanbieter-App ersetzt werden kann.
  2. Die TV-App zeigt den AV-Inhalt vom TV-Eingang an.
  3. Die TV-App kann nicht direkt mit den TV-Eingängen kommunizieren. Der TV Input Manager identifiziert den Status der TV Inputs für die TV App. Weitere Informationen zu diesen Einschränkungen finden Sie unten im TV Input Manager .

Berechtigungen

  • Nur signatureOrSystem TV-Eingänge und die TV-App haben vollen Zugriff auf die TV-Provider-Datenbank und können KeyEvents empfangen.
  • Nur System-TV-Eingänge können über den TV Input Manager-Dienst auf den TV-Eingang HAL zugreifen. Auf TV-Eingänge wird eins zu eins über TV Input Manager-Sitzungen zugegriffen.
  • TV-Eingänge von Drittanbietern haben paketgesperrten Zugriff auf die TV-Provider-Datenbank und können nur auf übereinstimmende Paketzeilen LESEN / SCHREIBEN.
  • TV-Eingänge von Drittanbietern können entweder ihren eigenen Inhalt oder den Inhalt der Passthrough-TV-Eingänge eines Geräteherstellers wie HDMI1 anzeigen. Sie können keine Inhalte von Nicht-Passthrough-TV-Eingängen wie einem integrierten oder IPTV-Tuner anzeigen.
  • TV_INPUT_HARDWARE Berechtigung für eine Hardware-TV-Eingabe-App signalisiert dem TV Input Manager-Dienst, den TV Input-Dienst beim Start zu benachrichtigen, um den TV Input Manager-Dienst aufzurufen und seine TV-Eingänge hinzuzufügen. Mit dieser Berechtigung kann eine Hardware-TV-Eingangs-App mehrere TV-Eingänge pro TV-Eingangsdienst unterstützen und die unterstützten TV-Eingänge dynamisch hinzufügen und entfernen.

TV-Anbieter

Die TV Provider-Datenbank speichert die Kanäle und Programme von TV Inputs. Der TV-Anbieter veröffentlicht und verwaltet auch die zugehörigen Berechtigungen, sodass TV-Eingänge nur ihre eigenen Datensätze sehen können. Beispielsweise kann ein bestimmter TV-Eingang nur die von ihm gelieferten Kanäle und Programme sehen und darf nicht auf die Kanäle und Programme anderer TV-Eingänge zugreifen.

Der TV-Anbieter ordnet "Broadcast-Genre" intern dem "kanonischen Genre" zu. TV-Eingänge sind dafür verantwortlich, "Broadcast-Genre" mit dem Wert im zugrunde liegenden Broadcast-Standard zu android.provider.TvContract.Genres , und das Feld "Kanonisches Genre" wird automatisch mit dem richtigen zugehörigen Genre aus android.provider.TvContract.Genres . Mit dem Sendestandard ATSC A / 65 und einem Programm mit dem Genre 0x25 (was "Sport" bedeutet) füllt der TV-Eingang das "Broadcast-Genre" mit der Zeichenfolge "Sport" und der TV-Anbieter füllt das Feld "Kanonisches Genre" mit der zugeordnete Wert android.provider.TvContract.Genres.SPORTS .

In der folgenden Abbildung finden Sie eine detaillierte Ansicht des TV-Anbieters.

Android TV-Anbieter
Abbildung 2. Android TV-Anbieter

Nur Apps in der privilegierten Systempartition können die gesamte TV Provider-Datenbank lesen.

Passthrough-TV-Eingänge speichern keine Kanäle und Programme.

Zusätzlich zu den Standardfeldern für Kanäle und Programme bietet die TV-Provider-Datenbank in jeder Tabelle, in der TV-Eingänge beliebige Daten speichern können, ein BLOB-Feld COLUMN_INTERNAL_PROVIDER_DATA . Diese BLOB-Daten können benutzerdefinierte Informationen enthalten, wie beispielsweise die Frequenz des zugeordneten Tuners, und können in einem Protokollpuffer oder einer anderen Form bereitgestellt werden. Ein durchsuchbares Feld ist verfügbar, um bestimmte Kanäle bei der Suche nicht verfügbar zu machen (z. B. um länderspezifische Anforderungen für den Schutz von Inhalten zu erfüllen).

Beispiele für Datenbankfelder

Der TV-Anbieter unterstützt strukturierte Daten in Kanal- ( android.provider.TvContract.Channels ) und Programmtabellen ( android.provider.TvContract.Programs ). Diese Tabellen werden von TV-Eingängen und System-Apps wie der TV-App gefüllt und aufgerufen. Diese Tabellen haben vier Arten von Feldern:

  • Anzeige: Anzeigefelder enthalten Informationen, die Apps möglicherweise für den Benutzer sichtbar machen möchten, z. B. den Namen eines Kanals ( COLUMN_DISPLAY_NAME ) oder die Nummer ( COLUMN_DISPLAY_NUMBER ) oder den Titel des angezeigten Programms.
  • Metadaten: Es gibt drei Felder zum Identifizieren von Inhalten gemäß relevanten Standards, z. B. die Transportstrom-ID eines Kanals ( COLUMN_TRANSPORT_STREAM_ID ), die ursprüngliche Netzwerk-ID ( COLUMN_ORIGINAL_NETWORK_ID ) und die Dienst-ID ( COLUMN_SERVICE_ID ).
  • Interne Daten : Felder, die für die benutzerdefinierte Verwendung von TV-Eingängen vorgesehen sind.
    Einige Felder, wie COLUMN_INTERNAL_PROVIDER_DATA , sind anpassbare BLOB-Felder, in denen ein TV-Eingang beliebige Metadaten zu seinem Kanal oder Programm speichern kann.
  • Flag: Flag-Felder geben an, ob ein Kanal für das Suchen, Durchsuchen oder Anzeigen eingeschränkt werden soll. Dies kann nur auf Kanalebene eingestellt werden. Alle Programme verschieben sich auf die Einstellung auf dem Kanal.
    • COLUMN_SEARCHABLE : In bestimmten Regionen kann es erforderlich sein, die Suche in einigen Kanälen COLUMN_SEARCHABLE . COLUMN_SEARCHABLE = 0 bedeutet, dass der Kanal in den Suchergebnissen nicht COLUMN_SEARCHABLE = 0 werden soll.
    • COLUMN_BROWSABLE : COLUMN_BROWSABLE für Systemanwendungen sichtbar. Verhindern, dass der Kanal von Anwendungen durchsucht wird. COLUMN_BROWSABLE = 0 bedeutet, dass der Kanal nicht in die COLUMN_BROWSABLE = 0 werden sollte.
    • COLUMN_LOCKED : COLUMN_LOCKED für Systemanwendungen sichtbar. Einschränken der Anzeige des Kanals durch ungültige Konten ohne Eingabe des PIN-Codes. COLUMN_LOCKED = 1 bedeutet, dass der Kanal durch COLUMN_LOCKED = 1 geschützt werden sollte.

Eine ausführlichere Liste der Felder finden Sie unter android/frameworks/base/media/java/android/media/tv/TvContract.java

Berechtigungen und Zugriffskontrolle

Alle Felder sind für jeden sichtbar, der Zugriff auf die entsprechende Zeile hat. Für Benutzer sind keine Felder direkt zugänglich. Sie sehen nur die Oberfläche der TV-App, der System-Apps oder der TV-Eingänge.

  • Jede Zeile enthält PACKAGE_NAME , das Paket (App), dem diese Zeile gehört, und wird bei Abfragen, Einfügen und Aktualisieren über TvProvider.java aktiviert. Ein TV-Eingang kann nur auf die von ihm geschriebenen Informationen zugreifen und ist von den Informationen anderer TV-Eingänge abgesperrt.
  • LESEN, SCHREIBEN Sie Berechtigungen über AndroidManifest.xml (erfordert die Zustimmung des Benutzers), um verfügbare Kanäle zu ermitteln.
  • Nur signatureOrSystem Apps können die ACCESS_ALL_EPG_DATA für den Zugriff auf die gesamte Datenbank erhalten.

TV Input Manager

Der TV Input Manager bietet eine zentrale System-API für das gesamte Android TV Input Framework. Es vermittelt die Interaktion zwischen Apps und TV-Eingängen und bietet Funktionen zur Kindersicherung. TV Input Manager-Sitzungen müssen eins zu eins mit TV Inputs erstellt werden. Der TV Input Manager ermöglicht den Zugriff auf installierte TV Inputs, sodass Apps:

  • Listen Sie die TV-Eingänge auf und überprüfen Sie deren Status
  • Erstellen Sie Sitzungen und verwalten Sie Listener

Für Sitzungen kann ein TV-Eingang von der TV-App nur auf URIs eingestellt werden, die der TV-Provider-Datenbank hinzugefügt wurden, mit Ausnahme von Passthrough-TV-Eingängen, die mit TvContract.buildChannelUriForPassthroughInput() . Bei einem TV-Eingang kann auch die Lautstärke eingestellt sein. Vom Gerätehersteller bereitgestellte und signierte TV-Eingänge (Signatur-Apps) oder andere in der Systempartition installierte Apps haben Zugriff auf die gesamte TV-Provider-Datenbank. Dieser Zugriff kann verwendet werden, um Apps zum Durchsuchen und Durchsuchen aller verfügbaren TV-Kanäle und -Programme zu erstellen.

Eine App kann einen TvInputCallback beim android.media.tv.TvInputManager erstellen und registrieren, um ihn bei einer TvInputCallback eines TV-Eingangs oder beim Hinzufügen oder Entfernen eines TV-Eingangs zurückzurufen. Beispielsweise kann eine TV-App reagieren, wenn ein TV-Eingang getrennt wird, indem sie ihn als getrennt anzeigt und seine Auswahl verhindert.

Der TV Input Manager abstrahiert die Kommunikation zwischen der TV App und den TV Inputs. Über die Standardschnittstelle von TV Input Manager und TV Input können mehrere Gerätehersteller ihre eigenen TV-Apps erstellen und gleichzeitig alle TV-Eingänge von Drittanbietern bei allen TV-Apps unterstützen.

TV-Eingänge

TV-Eingänge sind Android-Apps in dem Sinne, dass sie eine AndroidManifest.xml haben und installiert sind (über Play, vorinstalliert oder seitlich geladen). Android TV unterstützt vorinstallierte System-Apps, vom Gerätehersteller signierte Apps und TV-Eingänge von Drittanbietern.

Einige Eingänge, wie der HDMI-Eingang oder der eingebaute Tuner-Eingang, können nur vom Hersteller bereitgestellt werden, da sie direkt mit der zugrunde liegenden Hardware sprechen. Andere, wie IPTV, Place Shifting und externe STB, können von Dritten als APKs im Google Play Store bereitgestellt werden. Nach dem Herunterladen und Installieren kann der neue Eingang in der TV-App ausgewählt werden.

Passthrough-Eingabebeispiel

Android TV System Eingang
Abbildung 3. Android TV-Systemeingang

In diesem Beispiel ist der vom Gerätehersteller bereitgestellte TV-Eingang vertrauenswürdig und hat vollen Zugriff auf den TV-Anbieter. Als Passthrough-TV-Eingang werden keine Kanäle oder Programme beim TV-Anbieter registriert. Zu erhalten , die URI des Pass - Through - Eingang Referenz verwendet wird , verwenden , um die android.media.tv.TvContract Dienstprogramm Methode buildChannelUriForPassthroughInput(String inputId) . Die TV-App kommuniziert mit dem TV Input Manager, um den HDMI TV-Eingang zu erreichen.

Beispiel für einen eingebauten Tuner

Eingebauter Tuner-Eingang für Android TV
Abbildung 4. Eingebauter Tuner-Eingang für Android TV

In diesem Beispiel ist der vom Gerätehersteller bereitgestellte integrierte Tuner-TV-Eingang vertrauenswürdig und hat vollen Zugriff auf den TV-Anbieter.

Eingabebeispiel eines Drittanbieters

Android TV-Eingaben von Drittanbietern
Abbildung 5. Eingaben von Android TV von Drittanbietern

In diesem Beispiel wird der externe STB-TV-Eingang von einem Dritten bereitgestellt. Da dieser TV-Eingang nicht direkt auf den eingehenden HDMI-Video-Feed zugreifen kann, muss er den TV-Eingangs-Manager durchlaufen und den vom Gerätehersteller bereitgestellten HDMI-TV-Eingang verwenden.

Über den TV-Eingangsmanager kann der externe STB-TV-Eingang mit dem HDMI-TV-Eingang sprechen und ihn auffordern, das Video auf HDMI1 anzuzeigen. So kann der STB-TV-Eingang das Fernsehgerät steuern, während der vom Hersteller bereitgestellte HDMI-TV-Eingang das Video rendert.

Beispiel für Bild in Bild (PIP)

Android TV KeyEvents
Abbildung 6. Android TV KeyEvents

Das obige Diagramm zeigt, wie Tasten auf einer Fernbedienung an einen bestimmten TV-Eingang für die Bild-in-Bild-Anzeige (PIP) übergeben werden. Diese Tastendrücke werden vom vom Gerätehersteller bereitgestellten Hardwaretreiber interpretiert. Dabei werden Hardware-Scancodes in Android- InputReader und als KeyEvents an die Standardfunktionen der Android- Eingabepipeline InputReader und InputDispatcher übergeben . Diese wiederum lösen Ereignisse in der TV-App aus, wenn sie scharfgestellt sind.

Nur System-TV-Eingänge können InputEvents empfangen, und zwar nur, wenn sie über die RECEIVE_INPUT_EVENT verfügen. Der TV-Eingang ist dafür verantwortlich, zu bestimmen, welche InputEvents verwendet werden sollen, und sollte es der TV-App ermöglichen, die Tasten zu verarbeiten, die nicht benötigt werden.

Die TV-App ist dafür verantwortlich, zu wissen, welcher System-TV-Eingang aktiv ist, dh vom Benutzer ausgewählt, und eingehende KeyEvents zu disambiguieren und an die richtige TV Input Manager-Sitzung weiterzuleiten, indem dispatchInputEvent() KeyEvents , um das Ereignis an den zugehörigen TV-Eingang weiterzuleiten .

MHEG-5 Eingabebeispiel

Das folgende Diagramm zeigt eine detailliertere Ansicht, wie KeyEvents über Android TIF geleitet werden.

Beispiel für eine rote Taste für Android TV
Abbildung 7. Beispiel für die rote Taste von Android TV

Es zeigt den Ablauf einer in Europa üblichen Red-Button-App, mit der Benutzer auf interaktive Apps auf ihren Fernsehgeräten zugreifen können. Über diesen Transportstrom kann eine App geliefert werden. Wenn Sie auf die Schaltfläche klicken, können Benutzer mit diesen Broadcast-Apps interagieren. Sie können diese Broadcast-Apps beispielsweise verwenden, um auf verwandte Webseiten oder Sportergebnisse zuzugreifen.

Im Abschnitt Broadcast-App erfahren Sie, wie Broadcast-Apps mit der TV-App interagieren.

In diesem Beispiel:

  1. Die TV App ist scharf und empfängt alle Tasten.
  2. KeyEvents (z. B. die rote Taste) werden als InputEvents. an den aktiven TV-Eingang InputEvents.
  3. Der System-TV-Eingang ist in den MHEG-5-Stack integriert und verfügt über die RECEIVE_INPUT_EVENT .
  4. Beim Empfang des Aktivierungsschlüsselcodes (z. B. rote Taste) aktiviert der TV-Eingang die Broadcast-App.
  5. Die TV-Eingabe verwendet KeyEvents als InputEvents und die Broadcast-App steht im Mittelpunkt und verarbeitet InputEvents bis zur Entlassung.

Hinweis : TV-Eingänge von Drittanbietern erhalten niemals Schlüssel.

TV-Eingang HAL

Der TV-Eingang HAL unterstützt die Entwicklung von TV-Eingängen für den Zugriff auf TV-spezifische Hardware. Wie bei anderen Android-HALs ist der TV-Eingang HAL ( tv_input ) im AOSP- tv_input verfügbar, und der Anbieter entwickelt seine Implementierung.

TV App

Die System-TV-App präsentiert dem Benutzer Live-TV-Inhalte. Neben der Android-Plattform wird eine Referenz-TV-App (Live-TV) bereitgestellt, die unverändert verwendet, angepasst, erweitert oder von Geräteherstellern ersetzt werden kann. Der Quellcode ist im Android Open Source-Projekt verfügbar und kann im Artikel der Referenz-TV-App beschrieben werden.

Gerätehersteller können ihre TV-Apps erweitern, um Gerätehersteller oder länderspezifische Funktionen zu implementieren. Dies fällt jedoch nicht in den Geltungsbereich von TIF oder der Referenz-TV-App.

Die System-TV-App muss mindestens die folgenden Aufgaben ausführen:

Einrichtung und Konfiguration

  • TV-Eingänge automatisch erkennen
  • Lassen Sie die TV-Eingänge die Kanaleinrichtung einleiten
  • Steuern Sie die Einstellungen der Eltern
  • Kanäle bearbeiten

Anzeigen

  • Zugriff auf und Navigation in allen TV-Kanälen
  • Zugriff auf die Informationsleiste des TV-Programms
  • Anzeigen von EPG-Daten (Electronic Programming Guide)
  • Unterstützt mehrere Audio- und Untertitelspuren
  • Geben Sie die PIN-Herausforderung für die Kindersicherung an
  • Zulassen der Überlagerung der TV-Eingabe-Benutzeroberfläche für den TV-Standard (HbbTV usw.)
  • Füllen Sie Suchergebnisse für TV-Kanäle und Programme aus
  • App-Verknüpfungskarten anzeigen
  • Unterstützt Timeshifting-APIs
  • Behandeln Sie die DVR-Funktionalität und unterstützen Sie TV-Aufnahme-APIs

Dieser Funktionsumfang wird entsprechend den neuen Android-Versionen erweitert, in denen die Plattform-TIF-APIs erweitert werden. CTS Verifier bietet die Kompatibilitätstestabdeckung.

Unterstützung für TV-Eingänge von Drittanbietern

Android TV bietet Entwickler-APIs für TV-Eingaben von Drittanbietern, mit denen installierte Apps Softwarekanäle für das Live-TV-Erlebnis bereitstellen können. Um eine kompatible Android-Geräteimplementierung sicherzustellen, hat die System-TV-App einige Verantwortlichkeiten hinsichtlich der Bereitstellung von TV-Eingängen und -Kanälen von Drittanbietern für den Benutzer. Die Referenz-Live-TV-App bietet eine kompatible Implementierung. Wenn die System-TV-App ersetzt wird, müssen Gerätehersteller sicherstellen, dass ihre eigenen Apps eine ähnliche Kompatibilität bieten, um die Entwicklererwartungen für alle Android-TV-Geräte zu erfüllen.

Die System-TV-App muss Eingaben von Drittanbietern neben dem Standard-Live-TV-Dienst des Geräts anzeigen. Die Entwickler-APIs versprechen, dass Benutzer Kanäle (nach der Installation) innerhalb ihrer Standard-TV-Erfahrung finden können.

Die visuelle Unterscheidung zwischen integrierten Kanälen und Kanälen von Drittanbietern ist zulässig, wie im Abschnitt TV-App der Android-CDD definiert.

Die folgenden Abschnitte zeigen, wie die Live TV-Anwendung die CDD-Anforderungen erfüllt.

Neues Kanal-Setup

Das Hinzufügen neuer Eingänge / Kanäle von Drittanbietern beginnt damit, dass der Benutzer einen TV-Eingang aus einem Anwendungsspeicher wie Google Play findet und installiert.

Einige TV-Eingänge von Drittanbietern fügen der TvProvider-Datenbank automatisch Kanäle hinzu. Die meisten bieten jedoch eine Setup-Aktivität, mit der der Benutzer seine Kanäle einrichten, Anmeldedetails und andere Aktionen bereitstellen kann. Die System-TV-App muss sicherstellen, dass der Benutzer diese Setup-Aktivität aktivieren kann. Aus diesem Grund erfordert die CDD, dass Eingaben von Drittanbietern nur minimale Navigationsaktionen von der Haupt-TV-App entfernt sind.

Die Referenz-Live-TV-App bietet das Menü Kanalquellen für den Zugriff auf Eingaben.

Gehe zu den Einstellungen
Abbildung 8. Gehen Sie zu Einstellungen .

Gehen Sie in den Einstellungen zur Kanalquelle
Abbildung 9. Zum Kanalquellen in den Einstellungen.

Wählen Sie Ihre Quelle aus der Liste aus.
Abbildung 10. Wählen Sie Ihre Quelle aus der Liste aus.

Fügen Sie Kanäle aus Ihrer Quelle hinzu
Abbildung 11. Fügen Sie Kanäle aus Ihrer Quelle hinzu.

Zusätzlich wird oben im TV App-Menü eine Benachrichtigungskarte angezeigt, nachdem ein neuer TvInput installiert wurde, um den Benutzer direkt zum Setup zu führen:

Benachrichtigungen, die neue Kanalquellen anzeigen, sind verfügbar.
Abbildung 12. Es sind Benachrichtigungen verfügbar, die neue Kanalquellen anzeigen.

Wenn der Benutzer über die Benachrichtigung Maßnahmen ergreift, kann er auswählen, wie seine Quellen eingerichtet werden sollen (siehe Abbildung 10).

Informationen zu den Entwicklererwartungen in diesem Bereich finden Sie unter Definieren Ihres TV-Eingabedienstes .

Passen Sie die Kanalliste an

Gerätehersteller können eine Benutzeroberfläche bereitstellen, um bestimmte Kanäle auszublenden und Benutzern die Verwaltung ihrer eigenen EPGs zu ermöglichen. Live-TV beinhaltet diese Möglichkeit.

Öffnen Sie die Kanalliste in den Einstellungen.
Abbildung 13. Öffnen Sie die Kanalliste in den Einstellungen .

Passen Sie Ihre Kanalliste an.
Abbildung 14. Passen Sie Ihre Kanalliste an.

EPG

Entwickler von Eingaben von Drittanbietern müssen darauf vertrauen können, dass Benutzer während der allgemeinen Verwendung auf allen kompatiblen Android TV-Geräten problemlos zu ihren Kanälen navigieren können.

Kanäle von Eingängen von Drittanbietern müssen als Teil des Standard-Live-TV-Erlebnisses EPG des Geräts dargestellt werden. Es kann eine visuelle Trennung oder separate Kategorien für Kanäle von Drittanbietern verwendet werden (siehe Abschnitt TV-App der Android-CDD). Der Schlüssel besteht darin, dass Benutzer die von ihnen installierten Kanäle finden können.

Hersteller müssen die TV-App so implementieren, dass Suchergebnisse für globale Suchanfragen enthalten sind, um die bestmögliche Benutzererfahrung zu gewährleisten. Live TV bietet eine Implementierung (siehe com.android.tv.search.TvProviderSearch ), die Ergebnisse von Eingaben von Drittanbietern (für die Plattformkompatibilität erforderlich) sowie integrierte Eingaben liefert.

Zeitverschiebung

Für Geräte mit Android 6.0 und höher muss die TV-App die zeitversetzten APIs des Android-Frameworks unterstützen. Darüber hinaus müssen Hersteller Wiedergabesteuerungen in der TV-App implementieren, mit denen Benutzer die Wiedergabe anhalten, fortsetzen, zurückspulen und vorspulen können.

Für TV-Eingänge, die Zeitverschiebungen unterstützen, muss die TV-App die Wiedergabesteuerung anzeigen.

Steuerelemente für die Wiedergabe
Abbildung 15. Steuerelemente für die Wiedergabe

DVR

Für Geräte mit Android 7.0 und höher muss die TV-App die Android-Framework- TV-Aufnahme-APIs unterstützen, um aufgezeichnete Programme zu unterstützen, aufzulisten und abzuspielen.

Auf diese Weise können Gerätehersteller ihre DVR-Subsysteme an TIF anschließen und den Integrationsaufwand für die Aktivierung oder Integration der DVR-Funktionalität auf einem Fernsehgerät erheblich reduzieren. Darüber hinaus können Drittanbieter Aftermarket-DVR-Systeme bereitstellen, die an ein Android-TV-Gerät angeschlossen werden können.

Neben der Aufzeichnung von Live-Inhalten behandelt die TV-App auch Ressourcenkonflikte. Wenn das Gerät beispielsweise über zwei Tuner verfügt, kann es zwei Programme gleichzeitig aufnehmen. Wenn der Benutzer drei aufzeichnen möchte, muss die TV-App den Konflikt behandeln und sollte entweder eine Benachrichtigung anzeigen oder anfordern, dass der Benutzer eine Priorität für diese Anforderungen plant.

TV Apps können auch eine ausgefeiltere Logik implementieren, z. B. die Frage eines Benutzers, ob er alle zukünftigen Episoden einer Serie aufzeichnen möchte, wenn er eine Episode aufzeichnen möchte.

In der folgenden Abbildung finden Sie einen Überblick über eine mögliche DVR-Implementierung in Android TV.

Digitale Videoaufnahme in Android TV
Abbildung 16. Digitale Videoaufzeichnung in Android TV

  1. Der TV-Eingabedienst teilt der TV-App mit, wie viele Tuner verfügbar sind, damit die TV-App mögliche Ressourcenkonflikte bewältigen kann.
  2. Die TV-App erhält eine vom Benutzer initiierte Anforderung zum Aufzeichnen eines TV-Programms.
  3. Die TV-App speichert den Aufnahmeplan in ihrer internen Datenbank.
  4. Wenn es Zeit für die Aufnahme ist, leitet die TV-App eine Anforderung zum Einstellen des mit der Aufnahme verbundenen Kanals weiter.
  5. Der TV-Eingabedienst empfängt diese Anforderung, antwortet, ob geeignete Ressourcen vorhanden sind, und stellt den Kanal ein.
  6. Anschließend leitet die TV-App eine Anforderung zum Starten der Aufnahme an den TV Input Manager weiter.
  7. Der TV-Eingabedienst empfängt diese Anforderung und beginnt mit der Aufnahme.
  8. Der TV-Eingabedienst speichert die tatsächlichen Videodaten in seinem Speicher, bei dem es sich um externen Speicher oder Cloud-Speicher handeln kann.
  9. Wenn die Aufnahme beendet werden soll, leitet die TV-App die Anforderung zum Beenden der Aufnahme an den TV Input Manager weiter.
  10. Sobald der TV-Eingabedienst die Anforderung empfangen hat, stoppt er die Aufzeichnung und fügt dem TV-Anbieter die zugehörigen Metadaten hinzu, damit die TV-App die Aufzeichnung den Benutzern auf Anfrage anzeigen kann.

Weitere Informationen zum Implementieren von Aufnahmefunktionen in Ihrem TV-Eingabedienst finden Sie in diesem Artikel zur TV-Aufnahme .

Nützliche Ressourcen

  • Die Android-CDD und die dokumentierten Entwickler-APIs sind die endgültigen Referenzen.
  • CTS Verifier übt die APIs als Teil des Kompatibilitätstestprogramms aus. Das Ausführen dieser Funktion für Live-TV kann eine nützliche Methode sein, um den EPG, die Suche, die Kindersicherung und andere Anforderungen im Zusammenhang mit Eingaben von Drittanbietern anzuzeigen.
  • Informationen zu den Entwicklererwartungen in diesem Bereich finden Sie unter Definieren Ihres TV-Eingabedienstes .

Elterliche Kontrolle

Mit der Kindersicherung kann ein Benutzer unerwünschte Kanäle und Programme blockieren, die Blockierung jedoch durch Eingabe eines PIN-Codes umgehen.

Die Verantwortung für die Kindersicherungsfunktionen wird von der TV-App, dem TV Input Manager-Dienst, dem TV-Anbieter und dem TV Input geteilt.

Die elterliche Kontrolle ist obligatorisch und wird von CTS Verifier abgedeckt.

Eine Reihe von Ländern hat Bewertungssysteme definiert, die TV-Eingänge über die TVContentRating-API verwenden können . Darüber hinaus können TV-Eingänge ihre eigenen benutzerdefinierten Bewertungssysteme registrieren, wie der CTS Verifier-Test zeigt, bei dem eine gefälschte Bewertung eingeführt wird. In Ländern, in denen ein Standardbewertungssystem existiert, wird den Geräteherstellern empfohlen, die Kindersicherung des TV-Eingaberahmens mit anderen Mechanismen zu kombinieren, die sie möglicherweise enthalten.

TV-Anbieter

Jede COLUMN_LOCKED verfügt über ein COLUMN_LOCKED Feld, mit dem bestimmte Kanäle für die Anzeige COLUMN_LOCKED werden, ohne dass ein PIN-Code COLUMN_LOCKED werden muss. Das Programmfeld COLUMN_CONTENT_RATING dient zur Anzeige und wird nicht zur Durchsetzung der COLUMN_CONTENT_RATING verwendet.

TV Input Manager

Der TV Input Manager speichert jedes blockierte TvContentRating und antwortet auf isRatingBlocked() , um isRatingBlocked() , ob Inhalte mit der angegebenen Bewertung blockiert werden sollen.

TV-Eingang

Der TV-Eingang prüft, ob der aktuelle Inhalt blockiert werden soll, indem isRatingBlocked() im TV Input Manager isRatingBlocked() wenn sich die Bewertung des angezeigten Inhalts geändert hat (bei Programm- oder Kanalwechsel) oder sich die Einstellungen für die ACTION_BLOCKED_RATINGS_CHANGED geändert haben (bei ACTION_BLOCKED_RATINGS_CHANGED und ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ). . Wenn der Inhalt blockiert werden soll, deaktiviert der TV-Eingang Audio und Video und benachrichtigt die TV-App, dass der aktuelle Inhalt blockiert wird, indem notifyContentBlocked(TvContentRating) . Wenn der Inhalt nicht blockiert werden soll, notifyContentAllowed() der TV-Eingang Audio und Video und benachrichtigt die TV-App über den aktuellen Inhalt, indem notifyContentAllowed() .

TV App

Um die Kindersicherungs-APIs zu berücksichtigen und daher eine kompatible Plattform zu erstellen, muss die System-TV-App Benutzern eine Möglichkeit bieten, die Kindersicherung zu verwalten, einschließlich aller benutzerdefinierten Bewertungen, die von bestimmten Apps registriert werden.

Die TV-App zeigt eine PIN-Code-Benutzeroberfläche an, wenn sie von einem TV-Eingang benachrichtigt wird, dass der aktuelle Inhalt blockiert ist, oder wenn der Benutzer versucht, einen blockierten Kanal anzuzeigen.

Die TV-App speichert die Einstellungen für die Kindersicherung nicht direkt. Wenn der Benutzer die Einstellungen für die TvContentRating ändert, wird jedes blockierte TvContentRating vom TV Input Manager und blockierte Kanäle vom TV-Anbieter gespeichert.

Die TV-App muss die Berechtigung android.permission.MODIFY_PARENTAL_CONTROLS deklarieren, um die Einstellungen für die android.permission.MODIFY_PARENTAL_CONTROLS zu ändern.

Gerätehersteller werden aufgefordert:

HDMI-CEC

Mit HDMI-CEC kann ein Gerät ein anderes steuern, sodass eine einzelne Fernbedienung mehrere Geräte in einem Heimkino steuern kann. Es wird von Android TV verwendet, um die Einrichtung zu beschleunigen und die Fernsteuerung verschiedener TV-Eingänge über die zentrale TV-App zu ermöglichen. Beispielsweise können Eingänge umgeschaltet, Geräte hoch- oder heruntergefahren und vieles mehr werden.

Das Android TIF implementiert HDMI-CEC als HDMI-Steuerungsdienst, sodass Gerätehersteller lediglich Treiber auf niedriger Ebene entwickeln müssen, die mit dem leichten Android TV HAL interagieren und komplexere Geschäftslogiken überspringen. Mit der Bereitstellung einer Standardimplementierung versucht Android, Kompatibilitätsprobleme zu verringern, indem fragmentierte Implementierungen und die Unterstützung selektiver Funktionen reduziert werden. Der HDMI-Steuerungsdienst verwendet die vorhandenen Android-Dienste, einschließlich Eingang und Stromversorgung.

Dies bedeutet, dass vorhandene HDMI-CEC-Implementierungen neu gestaltet werden müssen, um mit Android TIF zusammenarbeiten zu können. Wir empfehlen, dass die Hardwareplattform einen Mikroprozessor enthält, um CEC-Einschalt- und andere Befehle zu empfangen.

CEC-Integration auf Android TV
Abbildung 17. CEC-Integration auf Android TV

  1. Der CEC-Bus empfängt von der aktuell aktiven Quelle den Befehl, zu einer anderen Quelle zu wechseln.
  2. Der Treiber übergibt den Befehl an HDMI-CEC HAL.
  3. Die HAL benachrichtigt alle ActiveSourceChangeListeners .
  4. Der HDMI-Steuerungsdienst wird über ActiveSourceChangeListener über ActiveSourceChangeListener .
  5. Der TV Input Manager-Dienst generiert eine Absicht für die TV App, die Quelle zu wechseln.
  6. Die TV-App erstellt dann eine TV Input Manager-Sitzung für den TV-Eingang, auf den umgeschaltet wird, und ruft in dieser Sitzung setMain auf.
  7. Die TV Input Manager-Sitzung leitet diese Informationen an den HDMI-TV-Eingang weiter.
  8. Der HDMI-TV-Eingang fordert zum Einstellen der Seitenbandoberfläche an.
  9. Der TV Input Manager-Dienst generiert einen entsprechenden Routing-Steuerbefehl zurück zum HDMI-Steuerungsdienst, wenn die Oberfläche eingestellt ist.

Richtlinien für die TV-Integration

Broadcast App

Da jedes Land sendungsspezifische Anforderungen hat (MHEG, Teletext, HbbTV usw.), wird von den Herstellern erwartet, dass sie ihre eigenen Lösungen für die Rundfunk-App bereitstellen, zum Beispiel:

  • MHEG: nativer Stapel
  • Videotext: nativer Stapel
  • HbbTV: HbbTV-Lösung von Vewd Software

In der Android L-Version erwartet Android TV, dass Gerätehersteller Systemintegratoren oder Android-Lösungen für regionale TV-Stacks verwenden, die Oberfläche an TV-Software-Stacks übergeben oder den erforderlichen Schlüsselcode für die Interaktion mit Legacy-Stacks übergeben.

So interagieren die Broadcast-App und die TV-App:

  1. Die TV-App ist scharf und empfängt alle Tasten.
  2. Die TV-App übergibt Tasten (z. B. rote Taste) an das TV-Eingabegerät.
  3. Das TV-Eingabegerät ist intern in den älteren TV-Stack integriert.
  4. Beim Empfang eines Aktivierungsschlüsselcodes (z. B. rote Taste) aktiviert das TV-Eingabegerät Broadcast-Apps.
  5. Eine Broadcast-App konzentriert sich auf die TV-App und verarbeitet Benutzeraktionen.

Für die Sprachsuche / -empfehlung unterstützt die Broadcast-App möglicherweise die In-App-Suche für die Sprachsuche.