Referenz-TV-App anpassen

Live TV ist eine Referenz-TV-App für Android-Fernseher. Gerätehersteller können jedoch weitere produktspezifische Funktionen hinzufügen, die nicht von der Standardimplementierung von Live-TV abgedeckt werden, z. B. Bildanpassung, Spielmodus oder 3D-Modus. Zur Unterstützung dieser gerätespezifischen Funktionen oder Optionen bietet Live TV folgende Anpassungen:

  • Aktivieren des Zeitversetzt-Modus, mit dem Nutzer die Wiedergabe pausieren, vorspulen und zurückspulen können. Konfiguriere den Zeitachsenmodus so, dass er externen Speicher anstelle des internen Speichers verwendet.
  • In der Zeile mit den TV-Optionen werden Optionen hinzugefügt.
  • Benutzerdefinierte Zeile hinzufügen und Optionen hinzufügen

Hinweis: Live-Kanäle ist die Live-TV-Implementierung von Google, die direkt auf Geräten mit Google-Diensten verwendet werden kann. Wenn du Live-Kanäle anpassen möchtest, ersetze in dieser Anleitung com.android.tv.* durch com.google.android.tv.*.

Live-TV personalisieren

Zum Anpassen von Live-TV muss auf dem Ziel-Android TV-Gerät ein Anpassungspaket installiert sein. Dies muss eine vorgefertigte System-App mit der Berechtigung com.android.tv.permission.CUSTOMIZE_TV_APP sein.

Live TV sucht nach einem Systempaket mit dieser Berechtigung, prüft die Ressourcendateien und erkennt die Aktivitäten des Pakets, die mit bestimmten Kategorien gekennzeichnet sind, um die Anpassung zu verarbeiten.

Wichtig: Live-TV kann nur für ein Paket angepasst werden.

Zeitversetztes Ansehen konfigurieren

Mit der Zeitverschiebung (Trickplay) können Android-Fernseher die Wiedergabe von Kanälen pausieren, zurückspulen und vorspulen. Bei der Live-TV-Implementierung kann die Zeitumstellung über die Wiedergabesteuerung verwendet werden. Die Zeitachsenfunktion ist bei Live-TV standardmäßig aktiviert, kann aber deaktiviert werden. Die Zeitachsenfunktion kann auch so konfiguriert werden, dass nur der externe Speicher verwendet wird.

Wenn du die Zeitabweichung konfigurieren möchtest, füge die Stringressource trickplay_mode hinzu und setze den Wert auf eine der folgenden Optionen:

  • enabled: Zeitversetztes Ansehen aktivieren. Dies ist der Standardwert, wenn keine Optionen angegeben werden.
  • disabled: Deaktiviere die Zeitverschiebung.
  • use_external_storage_only: Zeitversetztes Ansehen für die Verwendung externen Speichers konfigurieren
<string name="trickplay_mode">use_external_storage_only</string>
Die Benutzeroberfläche für die Wiedergabesteuerung wird durch Drücken der mittleren Taste auf dem Steuerkreuz aktiviert.

Abbildung 1 Die Benutzeroberfläche der Wiedergabesteuerung wird aktiviert, wenn du die Mitteltaste des D-Pads drückst.

TV-Optionen anpassen

Gerätehersteller können dem vorhandenen Menü mit den TV-Optionen benutzerdefinierte Optionen für Live-TV-Einstellungen hinzufügen, z. B. einen Verknüpfung zu den Bild- und Toneinstellungen.

Wenn Sie eine benutzerdefinierte Option angeben möchten, deklarieren Sie einen Intent-Filter, 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. Der Titel und das Symbol der Aktivität werden für die Option verwendet. Benutzerdefinierte TV-Optionen sollten zur vorhandenen Benutzeroberfläche passen, um die Nutzerfreundlichkeit zu optimieren.

Hinweis: Eine Aktivität kann nur eine Option verarbeiten, da bei Live-TV aufgrund der Android-Einschränkung keine Unterscheidung zwischen Intent-Filtern in einer Aktivität mit derselben Kategorie vorgenommen werden kann. Eine Lösung finden Sie unter Mehrere Optionen in einer Aktivität verarbeiten.

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 unter 100 wird vor den vorhandenen Elementen angezeigt und ein Wert über 100 danach. Mehrere benutzerdefinierte Optionen werden nach ihrer Priorität in aufsteigender Reihenfolge sortiert (entweder vor oder nach vorhandenen Optionen). Wenn Optionen dieselbe Priorität haben, ist ihre Reihenfolge nicht definiert.

In diesem Beispiel wird die Option als erste in der Zeile mit den TV-Optionen angezeigt. Wenn auf die Option geklickt wird, wird die PictureSettingsActivity gestartet.

<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 für eine benutzerdefinierte Zeile mit TV-Optionen

Abbildung 2: Beispiel für eine benutzerdefinierte Zeile mit TV-Optionen (Helligkeit und Energiesparmodus)

Beispiele für benutzerdefinierte TV-Optionen

Abbildung 3 Beispiele für benutzerdefinierte TV-Optionen

Mehrere Optionen in einer Aktivität verarbeiten

Eine Option wird dem Intent-Filter einer Aktivität zugeordnet und umgekehrt. Da Android Intent-Filter mit denselben Kategorien und Aktionen nicht unterscheidet, wird für eine Aktivität nur eine Option verarbeitet, auch wenn darin mehrere Intent-Filter deklariert sind. Wenn Sie mehrere Optionen in einer Aktivität verarbeiten möchten, 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>

Benutzerdefinierte Zeile erstellen

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

Zeilentitel

Definieren Sie einen partner_row_title-String in res/values/strings.xml. Der Stringwert wird für den Titel der benutzerdefinierten Zeile verwendet.

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

Benutzerdefinierte Optionen

Wenn Sie der benutzerdefinierten Zeile benutzerdefinierte Optionen hinzufügen möchten, gehen Sie wie beim Hinzufügen von Optionen zum Menü „TV-Optionen“ vor, ändern Sie aber 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.

Abbildung 4: Beispiel für eine optionale benutzerdefinierte Zeile.

Beispiel für ein Dialogfeld für benutzerdefinierte Optionen.

Abbildung 5 Beispiel für ein Dialogfeld für benutzerdefinierte Optionen.