Composants système et flux utilisateur

Le schéma suivant illustre les composants qui interagissent avec l'élément multimédia:

Composants du système

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 une série limitée 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.

Lancement de l'application multimédia

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 aplati MediaBrowserService 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 de MediaBrowserService 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ètres 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

Procédure de connexion

Figure 3. Flux de connexion

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é 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).

Gestion des exceptions

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ément PlaybackStateCompat.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 le PlaybackStateCompat.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 un PendingIntent doit être lorsque l'utilisateur clique sur le bouton mentionné ci-dessus. Ce PendingIntent 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.