Utiliser l'application de test du contrôleur multimédia

Les applications multimédias qui interagissent par commande vocale avec l'Assistant Google sur les téléphones, les voitures, les téléviseurs et les casques Android sont optimisées par les API de session multimédia Android et utilisent des actions multimédias. Le cycle de vie des actions multimédias peut être difficile à suivre. Même une simple requête de lecture à partir d'une recherche comporte de nombreuses étapes intermédiaires où un problème peut survenir, comme le montre la chronologie simplifiée :

Cycle de vie d'une action multimédia

Figure 1. Cycle de vie d'une action multimédia

L'application Media Controller Test (MCT) vous permet de tester les subtilités de la lecture des contenus multimédias sur Android et vous aide à vérifier la mise en œuvre de votre session multimédia.

L'application Media Controller Test est disponible en deux versions :

  • L'application cliente est implémentée sur l'ancien MediaControllerCompat. Cela vous permet de tester votre application de session multimédia basée sur un ancien MediaSessionCompat ou sur le MediaSession Media3 lorsqu'elle est accessible par une application externe via un ancien MediaControllerCompat. Le code source de l'ancienne version est disponible sur GitHub.
  • L'application cliente est implémentée sur la version la plus récente de Media3 MediaController. Cela vous permet de tester votre application de session multimédia basée sur un ancien MediaSessionCompat ou sur le MediaSession Media3 lorsqu'elle est accessible par une application externe via un MediaController Media3. Le code source de la version Media3 est disponible sur GitHub.

Le MCT affiche des informations sur la MediaController de votre application, telles que son PlaybackState et ses métadonnées, et peut être utilisé pour tester les commandes multimédias entre applications. Le MCT inclut également un framework de test de validation qui vous permet d'automatiser vos tests d'assurance qualité.

Pour utiliser le MCT, votre application doit disposer d'un service de navigateur multimédia, et vous devez autoriser le MCT à s'y connecter. Pour en savoir plus, consultez Créer un service de navigateur multimédia.

Démarrer le MCT

Page de lancement de MCT
Figure 2. La page de lancement de MCT

Lorsque vous lancez MCT, deux listes s'affichent :

  • Active MediaSessions (Sessions multimédias actives) : cette liste est initialement vide lorsque vous lancez le MCT, et le message "No media apps found. L'autorisation d'écoute des notifications est requise pour rechercher des sessions multimédias actives." Cliquez sur Paramètres pour accéder à l'écran des autorisations et activer l'autorisation pour l'outil de migration.
  • Implémentations de MediaBrowserService : cette liste affiche les applications qui ont implémenté un service de navigateur multimédia. Si vous avez implémenté un service de navigateur multimédia, votre application s'affiche dans cette liste, mais vous ne pouvez utiliser le MCT que si vous avez configuré votre application pour qu'elle accepte toutes les connexions ou si vous avez ajouté le MCT à la liste d'autorisation. Pour en savoir plus, consultez Contrôler les connexions client avec onGetRoot().

Tester manuellement une application pour téléphone

Si vous avez autorisé le MCT à se connecter au service de navigateur multimédia de votre application, celle-ci apparaît dans la liste des implémentations de la liste des services de navigateur multimédia. Recherchez-la, puis cliquez sur Control (Contrôle) pour démarrer votre application en arrière-plan.

Sinon, vous devez d'abord démarrer vous-même votre application en arrière-plan, puis cliquer sur Contrôler lorsqu'elle apparaît dans la liste des sessions multimédias actives.

Tester la préparation et la lecture

Lorsque le MCT commence à contrôler votre application, il affiche les métadonnées de session actuelles de l'application : le contenu multimédia actuellement sélectionné et les actions que la session est prête à gérer.

La page de contrôle
Figure 3 : Page de contrôle

En haut de la page des commandes MCT, un menu déroulant vous permet de sélectionner Recherche, URI, ID d'élément multimédia ou Aucun. Un champ de texte vous permet également de spécifier les données d'entrée associées à la recherche, à l'URI ou à l'ID d'élément multimédia si vous sélectionnez l'une de ces options.

Les boutons Prepare (Préparer) et Play (Lire) situés juste en dessous du champ de texte effectuent les appels appropriés (onPrepare(), onPrepareFromSearch(), onPrepareFromUri(), onPrepareFromMediaId(), onPlay(), onPlayFromSearch(), onPlayFromUri(), onPlayFromMediaId()) en fonction de l'action que vous avez sélectionnée.

Tester la priorité audio

Une application multimédia bien conçue doit pouvoir gérer la priorité audio. Vous pouvez tester la priorité audio en exécutant une autre application audio en même temps que la vôtre. La page des commandes de l'application MCT inclut un bouton qui demande et libère la priorité audio.

Pour tester la mise au point audio, procédez comme suit :

  1. Utilisez le menu déroulant Audio Focus (Focus audio) pour sélectionner l'un des trois indices de durée : AUDIOFOCUS_GAIN, AUDIOFOCUS_GAIN_TRANSIENT ou AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK.
  2. Appuyez sur le bouton pour demander la sélection.
  3. Appuyez de nouveau sur le bouton pour annuler la mise au point.

Tester les commandes de transport

Tester les commandes de transport
Figure 4. Tester les commandes de transport

Balayez l'écran vers la gauche pour afficher la vue de l'interface utilisateur du MCT. Cette vue comporte les boutons de transport du contrôleur multimédia standard et affiche l'image et les données du programme de la session. Les boutons de transport désactivés sont entourés en orange. Tous les autres sont actifs.

Testez votre lecteur à l'aide des boutons de transport. L'état des boutons de transport doit changer comme prévu. Par exemple, lorsque vous appuyez sur le bouton LECTURE, il doit être désactivé, et les boutons PAUSE et ARRÊT doivent être activés.

Balayez à nouveau l'écran vers la gauche pour afficher les actions facultatives. Chaque action est associée à une commande qui indique si elle est active ou non. S'il est actif, vous pouvez effectuer l'action en cliquant dessus.

Si vous vous êtes connecté à partir de la liste des applications disposant d'un service de navigateur multimédia, vous pouvez balayer l'écran deux fois de plus vers la gauche pour afficher des vues qui vous permettent de parcourir la hiérarchie de contenu de votre application ou de rechercher dans l'arborescence de contenu.

Tester manuellement une application vidéo

Utilisez le mode Écran partagé pour tester les contrôleurs d'applications vidéo. Tout d'abord, ouvrez votre application vidéo dans une fenêtre, puis ouvrez l'outil de création de contenu en mode Écran partagé.

Exécution des tests de validation

Le framework de test de validation propose des tests en un clic que vous pouvez exécuter pour vous assurer que votre application multimédia répond correctement à une demande de lecture.

Tester une application pour téléphone

Bouton de test
Figure 5 : Le bouton de test

Pour accéder aux tests de validation, cliquez sur le bouton Tester à côté de votre application multimédia.

État MCT

État de la commande multimédia
Figure 6. État de la commande multimédia

La vue suivante affiche des informations détaillées sur le MediaController du MCT, par exemple le PlaybackState, les métadonnées et la file d'attente. Deux boutons sont situés en haut à droite de la barre d'outils. Le bouton de gauche permet de basculer entre les journaux analysables et les journaux formatés. Le bouton de droite actualise la vue pour afficher les informations les plus récentes.

Sélectionner un test

Page de sélection des tests
Figure 7. Page de sélection des tests

En balayant l'écran vers la gauche, vous accédez à la vue des tests de vérification, où vous pouvez voir une liste déroulante des tests disponibles. Si un test utilise une requête, comme le test de lecture à partir d'une recherche illustré dans la figure 7, un champ de texte permet de saisir la chaîne de requête.

Le MCT inclut des tests pour les actions multimédias suivantes, et d'autres tests sont continuellement ajoutés au projet :

  • Lire
  • Lire depuis la recherche
  • Lire à partir de l'ID d'élément multimédia
  • Lire à partir de l'URI
  • Pause
  • Arrêter
  • Passer au suivant
  • Passer au précédent
  • Passer à l'élément de la file d'attente
  • Accéder à

Résultats des tests

Résultat d'un test réussi
Figure 8 : Résultat de test réussi

La zone de résultats en bas de la vue est initialement vide. Il affichera les résultats lorsque vous exécuterez un test. Par exemple, pour exécuter le test de lecture à partir de la recherche, saisissez une requête de recherche dans le champ de texte, puis cliquez sur Run Test (Exécuter le test). La capture d'écran suivante montre un résultat de test réussi.

Tester une application Android TV

Lorsque vous lancez le MCT sur Android TV, une liste des applications multimédias installées s'affiche. Notez qu'une application n'apparaît dans cette liste que si elle implémente un service de navigateur multimédia.

Page de lancement de MCT sur les téléviseurs

Figure 9. La page de lancement de la MCT sur les téléviseurs

Lorsque vous sélectionnez une application, l'écran de test s'affiche. Il présente une liste de tests de validation sur la droite.

Page des tests de validation sur un téléviseur

Figure 10. Page "Tests de validation" sur un téléviseur

Lorsque vous exécutez un test, le côté gauche de l'écran affiche des informations sur le MediaController sélectionné. Pour en savoir plus, consultez les journaux MCT dans Logcat.

Page d'informations sur le test sur un téléviseur

Figure 11. Page d'informations sur les tests sur TV

Les tests qui nécessitent une requête sont marqués d'une icône de clavier. Cliquez sur l'un de ces tests pour ouvrir un champ de saisie pour la requête. Appuyez sur Entrée pour exécuter le test.

Pour faciliter la saisie de texte, vous pouvez également utiliser une commande adb :

adb shell input text your-query

Vous pouvez utiliser "%s" pour ajouter un espace entre les mots. Par exemple, la commande suivante ajoute le texte "hello world" au champ de saisie.

adb shell input text hello%sworld

Créer un test

Vous pouvez envoyer une demande d'extraction avec d'autres tests que vous jugez utiles. Pour savoir comment créer des tests, consultez le wiki GitHub de MCT et les instructions de test de validation.

Pour en savoir plus, consultez les instructions de contribution.

Ressources supplémentaires

Le MCT est destiné à être utilisé avec des applications qui implémentent des API multimédias. Pour obtenir un exemple d'une telle application, consultez Universal Android Music Player.

Les corrections de bugs et les améliorations sont toujours les bienvenues. Veuillez consulter les instructions de contribution.