Le schéma suivant illustre les composants qui interagissent avec l'élément multimédia:
Figure 1 : Composants du système
Les éléments de cette figure sont décrits dans le tableau:
Component | Description |
---|---|
Écran d'accueil | Représente d'autres surfaces de l'interface utilisateur de la voiture qui affichent et contrôlent le jeu en cours de lecture médias. Dans AOSP, il s'agit de l'écran principal affiché au démarrage du système. Sur cet écran, les utilisateurs peuvent voir les détails de l'élément multimédia en cours de lecture et exécuter un ensemble limité de et des actions personnalisées (par exemple, "Lecture" et "Pause"). |
Interface | Fournit des fonctionnalités qui incluent des options de navigation globales dans l'interface utilisateur, comme la navigation vers Multimé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 chanson suite à une commande vocale) ou accédez au contenu multimédia au premier plan (par exemple, lorsqu'une application d'assistance vocale est invitée à afficher l'interface utilisateur d'une source multimédia spécifique). |
App Launcher | Toutes les applications Android se lancent dans le lanceur d'applications, y compris les sources multimédias. Le média peut présente son propre sélecteur de source multimédia, en complétant ou en remplaçant le lanceur d'applications en tant que point de départ des médias. |
Google Play Store | Lorsque GAS est utilisé, il s'agit de l'endroit où les utilisateurs trouvent et installent de nouvelles applications dans un un appareil Android. Pour les contenus multimédias, une fois les applications installées, les utilisateurs sont redirigés vers l'application 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. Il fournit des mécanismes permettant de détecter le moment où une source multimédia est placée au premier plan source. Multimédia et toutes les autres applications affichant la source multimédia en cours de lecture (par (par exemple, l'écran d'accueil), utilisez Media Session Manager pour détecter ces événements et mettre à jour l'UI. en conséquence. Les sources multimédias interagissent avec Media Session Manager Médias API Session. |
Radio | Application spécialisée permettant d'interagir avec le matériel radio. Recherches de radios des stations, en sélectionnant rapidement des stations récemment identifiées et en basculant d'une bande radio à l'autre. Les composants d'interface utilisateur partagés par Radio et Media permettent à l'utilisateur de basculer entre les deux expériences. |
Moteur de distraction du conducteur | Service système Android utilisé pour imposer des restrictions de l'expérience utilisateur en fonction de l'état de conduite de voiture. Pour les sources multimédias, connectez-vous et configurez l'expérience utilisateur (l'écran est contrôlé directement par sources multimédias), ce service garantit qu'aucun contenu dangereux ne s'affiche lorsque la voiture est à l'état de 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 une superposition d'écran bloquante). |
Parcours utilisateur
Lancement de l'application multimédia
Le processus de lancement de l'élément multimédia s'affiche ci-dessous.
Figure 2. Lancement de l'application multimédia
Le média doit être lancé à l'aide de la commande implicite suivante :
CAR_INTENT_ACTION_MEDIA_TEMPLATE
Cet intent peut avoir les informations suivantes en tant qu'extras:
-
android.car.intent.extra.MEDIA_COMPONENT
(facultatif) Extra de chaîne pour représenter le nom de composant aplatiMediaBrowserService
dans l'application multimédia à laquelle le média doit se connecter. S'il n'est pas fourni, le média s'affiche l'application multimédia actuellement sélectionnée. Cet intent est utilisé à partir des éléments suivants : points d'entrée:-
UI du système. Utilisé pour revenir à l'expérience multimédia ou pour commencer pour la première fois. Dans ce cas, l'intent ci-dessus serait utilisé sans aucun des éléments supplémentaires pour que l'application multimédia s'affiche.
-
Écran d'accueil, Assistants et Centre de notifications. Les utilisateurs peuvent accédez à "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 le lanceur d'applications, l'intent ci-dessus inclut
CAR_EXTRA_MEDIA_COMPONENT
supplémentaire, qui contient l'application multimédia sélectionnée. média désigne cette nouvelle interface l'application sélectionnée et s'y connecte. Pour en savoir plus, consultez la section ci-dessous, Intégration de lanceur d'applications aux contenus multimédias.
-
Intégration du lanceur d'applications aux contenus multimédias
Les applications multimédias ne sont pas autorisées à fournir des activités annotées avec
Catégorie android.intent.category.LAUNCHER
. Par conséquent, le lanceur d'applications (ou son
équivalent) doivent implémenter une logique spéciale pour gérer l'intégration de la source multimédia:
-
Le lanceur d'applications doit analyser le système pour détecter les packages implémentés
MediaBrowserService.SERVICE_INTERFACE
Pour ces packages, le lanceur d'applications récupère une icône de service semblable à celle utilisée pour récupérer d'autres activités. -
Le lanceur d'applications combine ensuite ces packages avec ceux qui implémentent
android.intent.category.LAUNCHER
activités. Si une application fournit l'implémentation deMediaBrowserService
et une activité de lanceur d'applications, le service prend la priorité.À l'heure où nous écrivons ces lignes, 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. Ce type d'activité peut être utilisé 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
Figure 3. Flux de connexion
Cette activité de paramétrage 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é correspondant à Filtre d'intent.
-
Si c'est le cas, autorisez l'utilisateur à accéder à l'activité.
-
Si des restrictions liées à l'expérience utilisateur d'une voiture sont en vigueur (par exemple, si la voiture est en mouvement), cette affordance doit doit être désactivée, car l'activité des paramètres n'est pas une interface utilisateur optimisée pour les pilotes.
Traitement des erreurs et connexion requise
Le contenu multimédia interagit avec les applications multimédias via l'API Android Media Session. Dans le cadre de ce
API, Media reçoit une
PlaybackState
qui communique l'état actuel de l'application multimédia.
Le processus de connexion commence lorsque l'application multimédia change
PlaybackState
à
STATE_ERROR
y compris un code d'erreur spécifique (voir détails ci-dessous). Lorsque cette
se produit, le média affiche la description de l'erreur et une affordance pour accéder à une activité de connexion.
implémentée par l'application multimédia.
Ce même processus peut être utilisé par les applications pour signaler d'autres situations d'erreur (par exemple, erreur de connectivité du serveur).
Figure 4. Gestion des exceptions
Dans le cadre de la gestion normale des erreurs PlaybackState
, Media doit vérifier l'entrée suivante.
-
PlaybackState
code d'erreur é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çues, ce qui indiquerait d'autres types de situations d'erreur. -
PlaybackState
message d'erreur (défini par les applications multimédias à l'aide de l'élémentPlaybackStateCompat.Builder#setErrorMessage
) contient un une explication lisible par l'humain (par exemple, "Vous n'êtes pas connecté"). Ce message doit être affiché de l'utilisateur, et il doit permettre d'optimiser la distraction. -
PlaybackState
peut éventuellement inclure les extras suivants (définis par le support). applications avec lePlaybackStateCompat.Builder#setExtras
) avec les clés suivantes.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL
Définissez ce paramètre sur une chaîne contient le message lisible à afficher sur le bouton sur lequel l'utilisateur appuie pour lancer la procédure de connexion. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
Défini avec unPendingIntent
doit être lorsque l'utilisateur clique sur le bouton mentionné ci-dessus. CePendingIntent
pointe vers une activité de connexion personnalisée implémentée par la même application multimédia.
-
-
L'état de
PlaybackState
est égal àSTATE_ERROR
Cela indique qu'aucune autre opération n'est possible tant que la connexion n'est pas terminée.