Personnalisation des commandes Android TV

Dans cette rubrique, vous apprendrez comment personnaliser les boutons de retour et d'avance rapide pour Android TV.

Introduction

Le Brightcove Media Controller pour TV est doté d'un bouton de rembobinage et d'un bouton d'avance rapide. Lorsque vous cliquez sur l'un de ces boutons, la valeur par défaut est de rechercher 3 secondes en arrière ou en avant.

Lorsque vous maintenez enfoncé l'un des boutons, la position de recherche se met à jour à un rythme de 3 secondes de contenu toutes les 40 millisecondes. Cela signifie que le maintien du bouton de rembobinage ou d'avance rapide chaque seconde fait avancer le contenu de 75 secondes.

Configuration des boutons de recherche

Les boutons de rembobinage et d'avance rapide peuvent être configurés via le EventType.SEEK_CONTROLLER_CONFIGURATION un événement.

Pour plus de simplicité, nous appellerons l'un de ces boutons le bouton de recherche puisque les propriétés suivantes s'appliquent aux deux.

Propriété de l'événement Valeur par défaut Description
Event.SEEK_DEFAULT 3000 ms La valeur de recherche par défaut en millisecondes que le bouton de recherche recherchera.
Event.SEEK_RELATIVE_ENABLED faux Si activé, permet à la valeur de recherche d'être relative à la durée de la vidéo définie par le EventType.VIDEO_DURATION_CHANGED un événement. Le pourcentage est fixé par Event.SEEK_PERCENTAGE.
Event.SEEK_PERCENTAGE 1% Le pourcentage relatif à la durée de la vidéo utilisé pour calculer la valeur de recherche par défaut.
Event.SEEK_ON_HOLD_WAIT_TIME 500 ms Le temps en millisecondes à attendre pour que l'événement de touche soit considéré comme un appui long au lieu d'un appui régulier.
Event.SEEK_ON_HOLD_UPDATE_FREQ 40 ms Le temps en millisecondes utilisé pour envoyer le EventType.SEEKBAR_DRAGGING_PROGRESS événement pour mettre à jour la barre de recherche du contrôleur multimédia.

Personnalisation des propriétés de l'événement

Vous souhaiterez peut-être des propriétés d'événement supplémentaires parmi celles répertoriées dans le tableau ci-dessus. Vous pouvez le faire en définissant les valeurs attendues et en émettant le EventType.SEEK_CONTROLLER_CONFIGURATION un événement.

Pour ajouter des propriétés personnalisées à l'événement, procédez comme suit :

  1. Définissez vos valeurs personnalisées.

    private static final int DEFAULT_TV_SEEK_TIME = (int) TimeUnit.SECONDS.toMillis(3);
    private static final int DEFAULT_TV_ON_HOLD_WAIT_TIME = (int) TimeUnit.SECONDS.toMillis(1);
    private static final int DEFAULT_TV_SEEK_PERCENTAGE = 1;
    private static final int DEFAULT_TV_ON_HOLD_UPDATE_FREQUENCY_TIME = 500;
    
  2. Inclure une méthode pour créer la carte des propriétés, ajouter les valeurs souhaitées et émettre le EventType.SEEK_CONTROLLER_CONFIGURATION un événement.

    private void setupTelevisionMode() {
       Map<String, Object> properties = new HashMap<>();
       properties.put(Event.SEEK_DEFAULT, DEFAULT_TV_SEEK_TIME);
       properties.put(Event.SEEK_RELATIVE_ENABLED, true);
       properties.put(Event.SEEK_PERCENTAGE, DEFAULT_TV_SEEK_PERCENTAGE);
       properties.put(Event.SEEK_ON_HOLD_WAIT_TIME, DEFAULT_TV_ON_HOLD_WAIT_TIME);
       properties.put(Event.SEEK_ON_HOLD_UPDATE_FREQ, DEFAULT_TV_ON_HOLD_UPDATE_FREQUENCY_TIME);
    
       eventEmitter.emit(EventType.SEEK_CONTROLLER_CONFIGURATION, properties);
    }
  3. Vérifiez si votre application est en mode TV pour configurer la configuration du contrôleur de recherche.

    if (BrightcoveMediaController.checkTvMode(mBaseVideoView.getContext())) {
       setupTelevisionMode();
    }