Les composants qui interagissent avec Media sont décrits dans le tableau suivant :
| Component | Description |
|---|---|
| Écran d'accueil | Représente d'autres surfaces de l'UI de la voiture qui affichent et contrôlent le contenu multimédia en cours de lecture. Dans AOSP, il s'agit de l'écran principal affiché au démarrage du système. Sur cet écran, les utilisateurs peuvent afficher les détails de l'élément multimédia en cours de lecture et exécuter un ensemble limité d'actions standards et personnalisées (par exemple, "Lecture" et "Pause"). |
| Interface | Fournit des fonctionnalités qui incluent des options de navigation dans l'UI globale, par exemple pour accéder à "Média". |
| Assistants | Android fournit des mécanismes permettant à différentes applications d'assistant vocal d'interagir avec le système. Ces applications peuvent interagir avec les sources multimédias en arrière-plan (par exemple, en lisant un titre à la suite d'une commande vocale) ou accéder à des contenus multimédias au premier plan (par exemple, lorsqu'une application d'assistant vocal est invitée à afficher l'UI d'une source multimédia spécifique). |
| App Launcher | Toutes les applications Android démarrent dans le Lanceur d'applications, y compris les sources multimédias. Le média peut présenter son propre sélecteur de source média, en complément ou en remplacement du lanceur d'applications comme point de départ pour les médias. |
| Google Play Store | Lorsque GAS est utilisé, c'est là que les utilisateurs trouvent et installent de nouvelles applications sur un appareil Android. Pour les contenus multimédias, une fois les applications installées, les utilisateurs sont redirigés vers le contenu multimédia pour terminer le processus de connexion ou commencer à interagir avec l'application. |
| Gestionnaire de sessions multimédias | Service système Android qui suit et contrôle les sessions multimédias de toutes les sources multimédias. Il fournit des mécanismes permettant de détecter quand une source multimédia devient la source multimédia au premier plan. Les applications multimédias et toutes les autres applications affichant la source multimédia en cours de lecture (par exemple, l'écran d'accueil) utilisent Media Session Manager pour détecter ces événements et mettre à jour l'UI en conséquence. Les sources multimédias interagissent avec le gestionnaire de session multimédia à l'aide de l'API Media Session. |
| Radio | Application spécialisée pour interagir avec le matériel radio. La radio recherche des stations de radio, sélectionne rapidement les stations récemment identifiées et permet de passer d'une bande radio à une autre. Les composants d'UI partagés par la radio et le contenu multimédia permettent à l'utilisateur de basculer entre les deux expériences. |
| Moteur de distraction du conducteur | Service système Android utilisé pour imposer des restrictions d'expérience utilisateur en fonction de l'état de conduite de la voiture. Pour l'expérience utilisateur de connexion et de paramètres des sources multimédias (où l'écran est contrôlé directement par les sources multimédias), ce service garantit qu'aucun contenu dangereux n'est affiché lorsque la voiture est en mode conduite. Les OEM peuvent personnaliser la définition de ces états et la façon dont le système réagit dans ces situations (par exemple, en affichant un écran de blocage). |
Parcours utilisateur
Lancement d'une application multimédia
Le contenu multimédia doit être lancé à l'aide de l'intention implicite
CAR_INTENT_ACTION_MEDIA_TEMPLATE.
Cet intent peut contenir les informations suivantes en tant qu'extras :
-
android.car.intent.extra.MEDIA_COMPONENT(facultatif). Chaîne supplémentaire pour représenter le nom de composant aplati d'unMediaBrowserServicedans l'application multimédia à laquelle le média doit se connecter. Si aucune application n'est fournie, Media affiche l'application multimédia actuellement sélectionnée. Cet intent est utilisé à partir des points d'entrée suivants :-
UI du système. Permet de revenir à l'expérience multimédia ou de l'utiliser pour la première fois. Dans ce cas, l'Intent ci-dessus serait utilisé sans aucun extra afin que Media affiche l'application multimédia actuellement sélectionnée.
-
Écran d'accueil, assistants et centre de notifications. Les utilisateurs peuvent accéder à "Multimédia" pour afficher l'application multimédia actuellement sélectionnée. Dans tous les cas, l'Intent implicite sans extras est déclenché.
-
Lanceur d'applications : Lorsque les utilisateurs sélectionnent une application multimédia dans le lanceur d'applications, l'intent ci-dessus inclut l'extra
CAR_EXTRA_MEDIA_COMPONENT, qui contient l'application multimédia sélectionnée. Media désigne cette application comme étant la nouvelle application sélectionnée et s'y connecte. Pour en savoir plus, consultez la section ci-dessous "Intégration du lanceur d'applications à Media".
-
Lanceur d'applications vers l'intégration de contenu multimédia
Les applications multimédias ne sont pas autorisées à fournir d'activité annotée avec la catégorie android.intent.category.LAUNCHER. Par conséquent, le lanceur d'applications (ou son équivalent) doit implémenter une logique spéciale pour gérer l'intégration des sources multimédias :
-
Le lanceur d'applications doit analyser le système à la recherche de packages implémentant
MediaBrowserService.SERVICE_INTERFACE. Pour ces packages, le lanceur d'applications récupère l'icône de service de la même manière que pour les autres activités. -
Le lanceur d'applications combine ensuite ces packages avec ceux qui implémentent les activités
android.intent.category.LAUNCHER. Si une application fournit une implémentationMediaBrowserServiceet une activité de lanceur d'applis, le service est prioritaire.Au moment de la rédaction de cet article, aucune application de source multimédia ne peut fournir d'activité de lanceur d'applications.
- Vous trouverez un exemple de cette logique dans le code AOSP à l'adresse
AppLauncherUtils#getAllLauncherApps().
Flux de connexion et options de configuration
Les applications multimédias peuvent inclure une activité de paramétrage optimisée pour les véhicules. Cette activité peut être utilisée pour implémenter des flux utilisateur non traités par les API Android Media, par exemple :
- Se connecter
- Se déconnecter
- Changement de compte
- Écran auquel l'utilisateur est actuellement connecté (le cas échéant)
- Configuration du service
Cette activité de paramètres est déclarée par l'application multimédia avec le filtre d'intent suivant :
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
Le média doit implémenter la logique suivante :
-
Vérifiez que l'application multimédia actuellement sélectionnée inclut une activité avec le filtre d'intent donné.
-
Si tel est le cas, autorisez l'utilisateur à accéder à l'activité.
-
Si les restrictions liées à l'expérience utilisateur du véhicule sont en vigueur (par exemple, si la voiture est en mouvement), cette affordance doit être désactivée, car l'activité des paramètres n'est pas une UI optimisée pour le conducteur.
Gestion des erreurs et connexion requise
Media interagit avec les applications multimédias via l'API Android Media Session. Dans le cadre de cette API, Media reçoit un objet PlaybackState qui communique l'état actuel de l'application multimédia.
Le processus de connexion commence lorsque l'application multimédia modifie PlaybackState en STATE_ERROR, y compris un code d'erreur spécifique (voir les détails ci-dessous). Dans ce cas, Media affiche la description de l'erreur et une affordance permettant d'accéder à une activité de connexion implémentée par l'application multimédia.
Les applications peuvent utiliser ce même flux pour signaler d'autres situations d'erreur (par exemple, une erreur de connectivité du serveur).
Dans le cadre de la gestion normale des erreurs PlaybackState, le média doit vérifier les entrées suivantes.
-
Code d'erreur
PlaybackStateégal àPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Cela indique que l'application multimédia nécessite une connexion pour continuer à fonctionner. D'autres codes d'erreur peuvent être reçus, ce qui indiquerait d'autres types de situations d'erreur. -
Le message d'erreur
PlaybackState(défini par les applications multimédias à l'aide de la méthodePlaybackStateCompat.Builder#setErrorMessage) contient une explication lisible par un humain (par exemple, "Vous n'êtes pas connecté"). Ce message doit être affiché à l'utilisateur et doit être optimisé pour éviter toute distraction au volant. -
PlaybackStatepeut éventuellement inclure les extras suivants (définis par les applications multimédias avec la méthodePlaybackStateCompat.Builder#setExtras) avec les clés suivantes.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Définissez une chaîne contenant le message lisible à afficher sur le bouton sur lequel l'utilisateur appuie pour démarrer le flux de connexion. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Définissez-le avec unPendingIntentpour qu'il se déclenche lorsque l'utilisateur clique sur le bouton mentionné ci-dessus. CePendingIntentpointe vers une activité de connexion personnalisée implémentée par la même application multimédia.
-
-
L'état
PlaybackStateest égal àSTATE_ERROR. Cela indique qu'aucune autre opération n'est possible tant que la connexion n'est pas terminée.