Personnalisez l'application TV de référence

Live TV est une application TV de référence conçue pour les appareils de télévision Android. Cependant, les fabricants d'appareils souhaiteront peut-être ajouter des fonctions plus spécifiques au produit, qui ne sont pas couvertes par l'implémentation par défaut de Live TV, telles que le réglage de l'image, le mode jeu ou le mode 3D. Pour prendre en charge ces fonctions ou options spécifiques à l'appareil, Live TV prend en charge ces personnalisations :

  • Activation du mode de décalage temporel, qui permet aux utilisateurs de faire une pause, une avance rapide et un retour en arrière. Configuration du mode de décalage temporel pour utiliser le stockage externe au lieu du stockage interne.
  • Ajout d'options à la ligne des options TV.
  • Ajout d'une ligne personnalisée et ajout d'options.

Remarque : Live Channels est l'implémentation de Live TV par Google qui peut être utilisée telle quelle sur les appareils dotés des services Google. Pour personnaliser les chaînes en direct, remplacez com.android.tv.* par com.google.android.tv.* dans ces instructions.

Personnaliser la télévision en direct

Pour personnaliser Live TV, l'appareil Android TV cible doit installer un package de personnalisation, qui doit être une application système prédéfinie avec l'autorisation com.android.tv.permission.CUSTOMIZE_TV_APP .

Live TV recherche un package système avec cette autorisation, vérifie les fichiers de ressources et détecte les activités du package marquées par des catégories spécifiques pour traiter la personnalisation.

Point clé : Un seul forfait permet de personnaliser Live TV.

Configurer le mode décalage temporel

Le décalage temporel (trickplay) permet aux appareils de télévision Android de mettre en pause, de rembobiner et d'avancer rapidement la lecture des chaînes. Dans l'implémentation Live TV, le décalage temporel peut être utilisé via l'interface utilisateur des commandes Play . Le décalage temporel est activé par défaut dans Live TV, mais peut être désactivé. Le décalage temporel peut également être configuré pour utiliser uniquement le stockage externe.

Pour configurer le décalage temporel, ajoutez la ressource de chaîne trickplay_mode et définissez sa valeur sur l'une de ces options :

  • enabled : Activer le décalage temporel. Il s'agit de la valeur par défaut lorsqu'aucune option n'est proposée.
  • disabled : Désactive le décalage temporel.
  • use_external_storage_only : configurez le décalage temporel pour utiliser le stockage externe.
<string name="trickplay_mode">use_external_storage_only</string>
L’interface utilisateur des commandes de lecture est activée après avoir appuyé sur le bouton central du D-pad.

Figure 1 . L’interface utilisateur des commandes de lecture est activée après avoir appuyé sur le bouton central du D-pad.

Personnaliser les options du téléviseur

Les fabricants d'appareils peuvent ajouter des options personnalisées pour les paramètres Live TV au menu d'options TV existant, comme l'ajout d'un raccourci vers les paramètres Sound Picture.

Pour indiquer une option personnalisée, déclarez un filtre d'intention qui filtre la catégorie com.android.tv.category.OPTIONS_ROW dans une activité. La fonctionnalité personnalisée est implémentée par le fabricant de l’appareil dans l’activité. L'activité se lance si l'option est cliquée. Le titre et l'icône de l'activité sont utilisés pour l'option. Les options TV personnalisées doivent correspondre à l'interface utilisateur existante pour offrir la meilleure expérience utilisateur.

Remarque : Une activité ne peut gérer qu'une seule option car Live TV ne peut pas différencier les filtres d'intention dans une activité de même catégorie en raison de la limitation Android. Voir Gérer plusieurs options dans une activité pour une solution de contournement.

Les fabricants d'appareils peuvent également placer une option personnalisée avant ou après les options existantes en définissant android:priority dans AndroidManifest.xml . Une option avec une valeur de priorité définie inférieure à 100 s'affiche avant les éléments existants et une valeur supérieure à 100 s'affiche après. Plusieurs options personnalisées (avant ou après les options existantes) sont triées par priorité par ordre croissant. Si les options ont la même priorité, l'ordre entre elles n'est pas défini.

Dans cet exemple, l'option apparaît en premier dans la ligne des options TV et PictureSettingsActivity se lance si l'utilisateur clique sur l'option.

<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>

Exemple de ligne d'options TV personnalisées

Figure 2 . Exemple de ligne d'options TV personnalisées (luminosité et économie d'énergie).

Exemples d'options TV personnalisées.

Figure 3 . Exemples d'options TV personnalisées.

Gérer plusieurs options dans une activité

Une option correspond au filtre d’intention d’une activité et vice versa. Étant donné qu'Android ne différencie pas les filtres d'intention avec les mêmes catégories et actions, une activité ne gère qu'une seule option, même si plusieurs filtres d'intention y sont déclarés. Pour gérer plusieurs options dans une activité, utilisez <activity-alias> dans AndroidManifest.xml . Dans l'activité, utilisez getIntent().getComponent() pour identifier l'option cliquée.

<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>

Créer une ligne personnalisée

Les fabricants d'appareils peuvent ajouter et personnaliser une ligne au-dessus de la ligne des options TV. Cette ligne personnalisée est facultative.

Titre de la ligne

Définissez une chaîne partner_row_title dans res/values/strings.xml . La valeur de la chaîne est utilisée pour le titre de ligne personnalisé.

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

Options personnalisées

Pour ajouter des options personnalisées à la ligne personnalisée, suivez le processus d'ajout d'options au menu d'options TV, mais remplacez plutôt le nom de la catégorie par 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>

Exemple de ligne personnalisée facultative.

Figure 4 . Exemple de ligne personnalisée facultative.

Exemple de boîte de dialogue d’options personnalisées.

Figure 5 . Exemple de boîte de dialogue d’options personnalisées.