Gérer les télécommandes de téléviseur

Les téléviseurs ont besoin d'un deuxième appareil pour interagir avec les applications : la télécommande ou une manette de jeu. Par conséquent, votre application doit être compatible avec le pavé directionnel. De plus, votre application peut avoir besoin de gérer la déconnexion des manettes et l'entrée de plusieurs manettes. type de contrôleur.

Ce guide décrit les exigences liées à l'utilisation des manettes pour les téléviseurs.

Commandes minimales du pavé directionnel

La manette par défaut d'un téléviseur est un pavé directionnel. En général, votre application doit être utilisable à partir d'un une télécommande qui ne contient que les boutons haut, bas, gauche, droite, Sélection, Retour et Accueil. Si votre application est un jeu qui nécessite généralement une manette de jeu avec des commandes supplémentaires, tenter de jouer en utilisant uniquement ces commandes du pavé directionnel. Sinon, avertir l'utilisateur que une manette est requise, et permettez-lui de quitter le jeu en douceur à l'aide du pavé directionnel.

Pour en savoir plus sur la navigation avec les manettes de pavé directionnel pour les téléviseurs, consultez Navigation TV :

Gérer les déconnexions de la manette

Les manettes TV sont souvent des appareils Bluetooth, qui peuvent essayer d'économiser de l'énergie en passe en mode veille et se déconnecte du téléviseur. Cela signifie qu'une application peut être interrompu ou redémarré s'il n'est pas configuré pour gérer ces événements de reconnexion. Ces événements peut se produire dans les circonstances suivantes:

  • Lorsqu'une vidéo de plusieurs minutes est lue, un pavé directionnel ou un jeu la manette peut passer en mode veille, se déconnecter du téléviseur, puis la reconnecter plus tard.
  • Pendant le jeu, un nouveau joueur peut rejoindre le jeu à l'aide d'une manette de jeu qui n'est pas encore connecté.
  • Pendant le jeu, un joueur peut quitter le jeu et déconnecter une manette de jeu.

Toute activité dans les applications TV sujette à des événements de déconnexion et de reconnexion doit être configurée pour : gérer les événements de reconnexion dans le fichier manifeste de l'application. L'exemple de code suivant montre comment permettre à une activité de gérer les modifications de configuration, y compris un clavier ou un appareil de navigation. connexion, déconnexion ou reconnexion:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

Cette modification de configuration permet à l'application de continuer à s'exécuter lors d'une reconnexion au lieu d'être redémarré par le framework Android, qui n'est pas une bonne expérience utilisateur.

Gérer les variations de saisie du pavé directionnel

Les utilisateurs de téléviseurs peuvent utiliser plusieurs types de manettes avec leur téléviseur. Pour Par exemple, un utilisateur peut avoir à la fois un pavé directionnel de base et une manette de jeu. Les codes de clavier fournie par une manette de jeu lorsqu'elle est utilisée pour les fonctions du pavé directionnel peut varier envoyés par un pavé directionnel de base.

Prise en charge des variations de l'entrée du pavé directionnel afin que l'utilisateur ne devez changer de manette pour faire fonctionner votre application. Pour en savoir plus sur la gestion variantes de saisie, voir la section Traiter les données saisies par le pavé directionnel.

Gérer les événements de bouton

Lorsque l'utilisateur clique sur un bouton d'une manette, votre application reçoit un événement avec une KeyEvent L'objectif Le comportement du bouton peut être un événement multimédia (lecture, pause ou arrêt, par exemple) ou un événement de type télévision, par exemple la sélection ou la navigation. Pour offrir une bonne expérience utilisateur, attribuez sur les boutons de la manette.

Événements d'UI TV

Attribuer le comportement de l'UI TV aux boutons qui génèrent KeyEvent comme indiqué dans le tableau suivant:

KeyEventComportement
KEYCODE_BUTTON_B, KEYCODE_BACKRetour
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER KEYCODE_DPAD_CENTER KEYCODE_NUMPAD_ENTERSélection
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHTNavigation

Événements multimédias

Lorsque l'utilisateur regarde le contenu multimédia, attribuez un comportement aux boutons qui génèrent KeyEvent, comme indiqué dans le tableau suivant. Si votre application contrôle un MediaSession, utiliser un MediaControllerAdapter pour appeler l'une des MediaControllerCompat.TransportControls présentées dans le tableau. Notez que les boutons de sélection ont le rôle de lecture ou de pause. dans ce contexte.

KeyEventappel TransportControlsComportement
BUTTON_SELECT, BUTTON_A, ENTER DPAD_CENTER KEYCODE_NUMPAD_ENTER play()Lire
BUTTON_START, BUTTON_SELECT, BUTTON_A ENTER, DPAD_CENTER et KEYCODE_NUMPAD_ENTER pause()Mettre en pause
BUTTON_R1skipToNext()Passer au contenu suivant
BUTTON_L1skipToPrevious()Passer au contenu précédent
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER AXIS_THROTTLEfastForward()Avance rapide
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER AXIS_BRAKErewind()Retour arrière
N/Astop()Arrêter

Remarque:Lorsque vous utilisez un MediaSession, n'ignorez pas le traitement de boutons spécifiques aux médias, tels que KEYCODE_MEDIA_PLAY ou KEYCODE_MEDIA_PAUSE. Le système déclenche automatiquement MediaSession.Callback .

Assurez-vous que le bouton "Retour" fonctionne correctement.

Le bouton "Retour" ne doit jamais faire office d'activation/désactivation. Par exemple, ne l'utilisez pas à la fois pour ouvrir et fermer . Utilisez-la uniquement pour revenir en arrière, comme un fil d'Ariane, dans les écrans précédents que le lecteur a démarré.

Étant donné que le bouton "Retour" n'effectue que la navigation linéaire vers l'arrière, vous pouvez utiliser pour laisser un menu dans l'application ouvert par un autre bouton et revenir à l'application. Le fait d'appuyer successivement sur le bouton "Retour" doit toujours permettre d'accéder à l'écran d'accueil d'Android TV. Par exemple: jeu > Écran de mise en pause du jeu > écran principal du jeu > l'écran d'accueil d'Android TV ou Lecture de la série TV > Écran principal de l'application TV > Écran d'accueil d'Android TV.

Pour plus d'informations sur la conception de la navigation, voir Conception de la navigation vers le haut et vers le haut. Pour en savoir plus sur l'implémentation, consultez Fournir un retour arrière approprié :

Gérer les manettes de jeu

Prendre en charge les commandes du pavé directionnel

Planifiez votre stratégie autour d'une commande à pavé directionnel, car elle correspond au par défaut pour les appareils Android TV. Le lecteur doit pouvoir utiliser un pavé directionnel pour tous les aspects de jeu. Ils permettent non seulement de contrôler le gameplay, mais aussi de parcourir les menus et les annonces. Pour cette raison, assurez-vous que votre jeu Android TV ne fait pas référence à une interface tactile utilisant un langage tel que "Appuyez ici pour continuer."

La façon dont vous façonnez l'interaction du joueur avec la manette peut être essentielle pour obtenir un bon utilisateur expérience. Voici quelques bonnes pratiques :

  • Communiquer en amont les exigences concernant la manette:utilisez votre description Google Play. pour communiquer au joueur ses attentes concernant les manettes. Si un jeu est mieux adapté une manette avec un joystick plutôt qu’une avec un seul pavé directionnel, soyez clair. Un joueur qui utilise un contrôleur qui ne convient pas à un jeu peut avoir une mauvaise expérience et donner à votre une mauvaise note.
  • Utilisez un mappage cohérent des boutons:un mappage intuitif des boutons est essentiel. à une bonne expérience utilisateur. Par exemple, pour respecter les douanes acceptées, appuyez sur le bouton A. pour accepter et sur le bouton B pour annuler. Vous pouvez également proposer de la flexibilité sous forme de remappabilité. Pour en savoir plus sur le mappage des boutons, consultez la section Identifiant les actions de la manette.
  • Détectez les fonctionnalités du contrôleur et effectuez les ajustements nécessaires:interrogez le contrôleur. pour optimiser l'association entre la manette et le jeu. Par exemple : vous pouvez vouloir qu'un joueur oriente un objet en agitant la télécommande en l'air, mais si une La manette du joueur n'est pas équipée d'un accéléromètre ni d'un gyroscope. Il est donc impossible d'agiter la main. interroger la télécommande et, si la détection des mouvements n'est pas compatible, optez pour un autre schéma de contrôle disponible. Pour en savoir plus, sur les capacités du contrôleur d'interrogation, consultez la page Support différentes versions d'Android.

Utiliser les boutons appropriés

Les manettes de jeu ne disposent pas toutes de boutons "Démarrer", "Rechercher" ou "Menu". Assurez-vous que votre interface utilisateur ne dépend pas sur l'utilisation de ces boutons.

Gérer plusieurs manettes

Lorsque plusieurs joueurs jouent à un jeu, chacun avec sa propre manette, il est important de mapper chaque paire joueur-contrôleur. Pour en savoir plus sur l'implémentation de "Controller-number" , consultez la section . getControllerNumber().

Gérer les déconnexions de la manette

Lorsqu'une manette est déconnectée au milieu du jeu, mettez le jeu en pause et affichez un qui invite le joueur déconnecté à reconnecter sa manette.

Fournissez également des conseils de dépannage dans la boîte de dialogue. Par exemple, indiquez au sur "Vérifiez votre connexion Bluetooth". Pour en savoir plus sur l'implémentation d'un périphérique d'entrée, consultez la section Gérer les appareils actions et Présentation du Bluetooth

Afficher les instructions concernant la manette

Si votre jeu fournit des instructions pour les commandes visuelles, utilisez un image de la manette sans marque et n'inclure que des boutons compatibles avec Android.

Pour obtenir des exemples d'images d'une manette compatible Android, téléchargez le Modèle de manette de jeu Android TV (ZIP) Elle comprend une manette blanche sur fond noir et une manette noire sur un fond blanc. (image de la figure 1) sous forme de fichier PNG et de fichier Adobe® Illustrator®.

Figure 1 : Exemples d'instructions pour la manette utilisant les Modèle de manette de jeu Android TV.