Personnaliser l'application TV de référence

La télévision en direct est une application TV de référence conçue pour les appareils Android TV. Toutefois, les fabricants d'appareils peuvent souhaiter ajouter d'autres fonctionnalités spécifiques au produit, qui ne sont pas couvertes par l'implémentation par défaut de la TV en direct, telles que l'ajustement de l'image, le mode jeu ou le mode 3D. Pour prendre en charge ces fonctions ou options spécifiques à l'appareil, la TV en direct est compatible avec les personnalisations suivantes:

  • Activation du mode décalage temporel, qui permet aux utilisateurs de mettre en pause, d'avancer rapidement et de revenir en arrière. Configurer le mode de décalage temporel pour qu'il utilise le stockage externe plutôt que le stockage interne.
  • Ajout d'options à la ligne "Options TV".
  • Ajout d'une ligne personnalisée et d'options dans celle-ci.

Remarque: Chaînes en direct est l'implémentation de la télévision en direct de Google, qui peut être utilisée telle quelle sur les appareils avec les 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 la télévision en direct, un package de personnalisation doit être installé sur l'appareil Android TV cible. Il doit s'agir d'une application système précompilée disposant de l'autorisation com.android.tv.permission.CUSTOMIZE_TV_APP.

La télévision en direct 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.

Principe clé: Un seul forfait peut personnaliser la TV en direct.

Configurer le mode de décalage temporel

Le décalage temporel (trickplay) permet aux appareils Android TV de mettre en pause, de faire un retour arrière et d'avancer rapidement la lecture d'une chaîne. Dans l'implémentation de la TV en direct, le décalage temporel peut être utilisé via l'UI des commandes de lecture. Le décalage temporel est activé par défaut dans la TV en direct, mais vous pouvez le désactiver. Le décalage temporel peut également être configuré pour utiliser un stockage externe uniquement.

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

  • enabled: active le décalage temporel. Il s'agit de la valeur par défaut lorsque aucune option n'est fournie.
  • disabled: désactive le décalage temporel.
  • use_external_storage_only: configurez le décalage temporel pour utiliser un stockage externe.
<string name="trickplay_mode">use_external_storage_only</string>
L&#39;interface utilisateur des commandes de lecture est activée après avoir appuyé sur le bouton central du pavé directionnel.

Figure 1 : L'interface utilisateur des commandes de lecture est activée après avoir appuyé sur le bouton central de la croix directionnelle.

Personnaliser les options TV

Les fabricants d'appareils peuvent ajouter des options personnalisées pour les paramètres de la télévision en direct au menu des options TV existant, par exemple en ajoutant un raccourci aux paramètres de l'image et du son.

Pour indiquer une option personnalisée, déclarez un filtre d'intent 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'utilisateur clique sur l'option. Le titre et l'icône de l'activité sont utilisés pour l'option. Les options de TV personnalisées doivent correspondre à l'UI existante pour offrir la meilleure expérience utilisateur possible.

Remarque: Une activité ne peut gérer qu'une seule option, car la télévision en direct ne peut pas différencier les filtres d'intent dans une activité de la même catégorie en raison de la limite d'Android. Pour obtenir une solution de contournement, consultez Gérer plusieurs options dans une activité.

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 dont la valeur de priorité définie est 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 ordre croissant en fonction de leur priorité. 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 dessus.

<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&#39;options TV personnalisées

Figure 2 : Exemple de ligne d'options de téléviseur personnalisées (luminosité et économie d'énergie).

Exemples d&#39;options de TV personnalisées.

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

Gérer plusieurs options dans une activité

Une option est mappée sur le filtre d'intent d'une activité et inversement. Étant donné qu'Android ne différencie pas les filtres d'intent avec les mêmes catégories et actions, une activité ne gère qu'une seule option, même si plusieurs filtres d'intent 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 sur laquelle l'utilisateur a cliqué.

<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 la ligne personnalisée.

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

Options de personnalisation

Pour ajouter des options personnalisées à la ligne personnalisée, suivez la procédure d'ajout d'options au menu d'options TV, mais remplacez 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&#39;option personnalisée.

Figure 5 : Exemple de boîte de dialogue d'option personnalisée.