Passen Sie die Referenz-TV-App an

Live TV ist eine Referenz-TV-App, die für Android-Fernsehgeräte entwickelt wurde. Gerätehersteller möchten jedoch möglicherweise weitere produktspezifische Funktionen hinzufügen, die nicht von der Standardimplementierung von Live TV abgedeckt werden, wie z. B. Bildanpassung, Spielemodus oder 3D-Modus. Um diese gerätespezifischen Funktionen oder Optionen zu unterstützen, unterstützt Live TV die folgenden Anpassungen:

  • Aktivieren des zeitversetzten Modus, der Benutzern das Anhalten, Vor- und Zurückspulen ermöglicht. Konfigurieren des zeitversetzten Modus zur Verwendung von externem Speicher anstelle von internem Speicher.
  • Hinzufügen von Optionen zur Zeile „TV-Optionen“.
  • Hinzufügen einer benutzerdefinierten Zeile und Hinzufügen von Optionen darin.

Hinweis : Live Channels ist Googles Implementierung von Live TV, das unverändert auf Geräten mit Google-Diensten verwendet werden kann. Um Live-Kanäle anzupassen, ersetzen Sie in dieser Anleitung com.android.tv.* durch com.google.android.tv.* .

Passen Sie Live-TV an

Um Live TV anzupassen, muss auf dem Android TV-Zielgerät ein Anpassungspaket installiert sein, bei dem es sich um eine vorgefertigte System-App mit der Berechtigung com.android.tv.permission.CUSTOMIZE_TV_APP handeln muss.

Live TV sucht nach einem Systempaket mit dieser Berechtigung, überprüft die Ressourcendateien und erkennt die Aktivitäten des Pakets, die mit bestimmten Kategorien markiert sind, um die Anpassung durchzuführen.

Kernpunkt : Nur ein Paket kann Live-TV anpassen.

Zeitversetzten Modus konfigurieren

Durch die zeitversetzte Wiedergabe (Trickplay) können Android-Fernsehgeräte die Kanalwiedergabe anhalten, zurückspulen und vorspulen. In der Live-TV-Implementierung kann Timeshifting über die Benutzeroberfläche der Wiedergabesteuerung verwendet werden. Timeshifting ist im Live-TV standardmäßig aktiviert, kann aber deaktiviert werden. Timeshifting kann auch so konfiguriert werden, dass nur externer Speicher verwendet wird.

Um die Zeitverschiebung zu konfigurieren, fügen Sie die Zeichenfolgenressource trickplay_mode hinzu und legen Sie ihren Wert auf eine dieser Optionen fest:

  • enabled : Zeitverschiebung aktivieren. Dies ist der Standardwert, wenn keine Optionen angegeben sind.
  • disabled : Timeshifting deaktivieren.
  • use_external_storage_only : Konfigurieren Sie die Zeitverschiebung, um externen Speicher zu verwenden.
<string name="trickplay_mode">use_external_storage_only</string>
Die Benutzeroberfläche der Wiedergabesteuerung wird aktiviert, nachdem die mittlere Steuerkreuztaste gedrückt wurde.

Abbildung 1 . Die Benutzeroberfläche der Wiedergabesteuerung wird aktiviert, nachdem die mittlere Steuerkreuztaste gedrückt wurde.

Passen Sie die TV-Optionen an

Gerätehersteller können benutzerdefinierte Optionen für Live-TV-Einstellungen zum vorhandenen TV-Optionsmenü hinzufügen, z. B. das Hinzufügen einer Verknüpfung zu den Tonbildeinstellungen.

Um eine benutzerdefinierte Option anzugeben, deklarieren Sie einen Absichtsfilter, der die Kategorie com.android.tv.category.OPTIONS_ROW in einer Aktivität filtert. Die benutzerdefinierte Funktion wird vom Gerätehersteller in der Aktivität implementiert. Die Aktivität wird gestartet, wenn auf die Option geklickt wird. Für die Option werden der Titel und das Symbol der Aktivität verwendet. Benutzerdefinierte TV-Optionen sollten zur vorhandenen Benutzeroberfläche passen, um das beste Benutzererlebnis zu bieten.

Hinweis : Eine Aktivität kann nur eine Option verarbeiten, da Live TV aufgrund der Android-Einschränkung Intent-Filter in einer Aktivität mit derselben Kategorie nicht unterscheiden kann. Eine Problemumgehung finden Sie unter Behandeln mehrerer Optionen in einer Aktivität .

Gerätehersteller können auch eine benutzerdefinierte Option vor oder nach den vorhandenen Optionen platzieren, indem sie android:priority in AndroidManifest.xml definieren. Eine Option mit einem definierten Prioritätswert von weniger als 100 wird vor den vorhandenen Elementen und ein Wert über 100 wird danach angezeigt. Mehrere benutzerdefinierte Optionen (entweder vor oder nach vorhandenen Optionen) werden nach ihrer Priorität in aufsteigender Reihenfolge sortiert. Wenn Optionen dieselbe Priorität haben, ist die Reihenfolge zwischen ihnen nicht definiert.

In diesem Beispiel erscheint die Option zuerst in der TV-Optionszeile und PictureSettingsActivity wird gestartet, wenn auf die Option geklickt wird.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

Beispiel einer Zeile mit benutzerdefinierten TV-Optionen

Figur 2 . Beispiel einer Zeile mit benutzerdefinierten TV-Optionen (Helligkeit und Energieeinsparung).

Beispiele für benutzerdefinierte TV-Optionen.

Figur 3 . Beispiele für benutzerdefinierte TV-Optionen.

Behandeln Sie mehrere Optionen in einer Aktivität

Eine Option wird dem Absichtsfilter einer Aktivität zugeordnet und umgekehrt. Da Android Intent-Filter nicht mit denselben Kategorien und Aktionen unterscheidet, verarbeitet eine Aktivität nur eine Option, selbst wenn darin mehrere Intent-Filter deklariert sind. Um mehrere Optionen in einer Aktivität zu verarbeiten, verwenden Sie <activity-alias> in AndroidManifest.xml . Verwenden Sie in der Aktivität getIntent().getComponent() , um die angeklickte Option zu identifizieren.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

Erstellen Sie eine benutzerdefinierte Zeile

Gerätehersteller können über der Zeile mit den TV-Optionen eine Zeile hinzufügen und anpassen. Diese benutzerdefinierte Zeile ist optional.

Zeilentitel

Definieren Sie eine partner_row_title Zeichenfolge in res/values/strings.xml . Der Wert der Zeichenfolge wird für den benutzerdefinierten Zeilentitel verwendet.

<string name="partner_row_title">Partner Row</string>

Benutzerdefinierte Optionen

Um benutzerdefinierte Optionen zur benutzerdefinierten Zeile hinzuzufügen, befolgen Sie den Vorgang zum Hinzufügen von Optionen zum TV-Optionsmenü, ändern Sie jedoch stattdessen den Kategorienamen in com.android.tv.category.PARTNER_ROW .

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

Beispiel für eine optionale benutzerdefinierte Zeile.

Figur 4 . Beispiel für eine optionale benutzerdefinierte Zeile.

Beispieldialog für benutzerdefinierte Optionen.

Abbildung 5 . Beispieldialog für benutzerdefinierte Optionen.