La sélection du VIA actif est effectuée par
ManageAssistActivity
dans CarSettings. Ce flux est déclenché par l'application PackageInstaller, dans la section "Applications par défaut" de l'écran des paramètres.

Figure 1 : Applications par défaut sur l'écran "Paramètres"
Le VPA sélectionné est exposé au système de deux manières :
- Dans le cadre du service système
RolesManager - Par
VoiceInteractionManagerServicevia l'API interneAssistUtils.
Vous pouvez obtenir la liste des VIA candidats à l'aide de RolesManager avec le nom de rôle android.app.role.ASSISTANT.
Déclenchement du mot clé
Android fournit AlwaysOnHotwordDetector comme abstraction au-dessus du DSP matériel. Cela permet d'associer facilement un VoiceInteractionService à un modèle vocal pour la reconnaissance vocale toujours activée à faible consommation d'énergie. Il s'agit du flux d'interaction le plus courant et le plus connu, dans lequel l'utilisateur demande à interagir avec une application vocale (AV) pour démarrer une nouvelle conversation. Les sessions vocales qui commencent de cette manière sont identifiées par SHOW_SOURCE_ASSIST_GESTURE flag.

Figure 2. Déclenchement du mot clé
Légende. Les services système s'affichent en bleu clair et les composants VIA en vert.
Déclenchement PTT
Cela s'applique à une pression longue ou courte sur le bouton matériel. Dans AAOS, le PTT est géré par CarInputService. Dans une implémentation par défaut, ce service gère les événements d'entrée reçus via le HAL du véhicule. Dans le cas particulier de l'interaction vocale, il applique la logique suivante aux événements clés :
- Les événements PTT courts (
KeyEvent.KEYCODE_VOICE_ASSIST) sont dirigés versVoiceInteractionManagerServicepour démarrer une nouvelle session vocale. - Les événements PTT longs sont d'abord transmis aux récepteurs de projection (Android Auto ou CarPlay, par exemple), puis aux appareils connectés en Bluetooth et enfin à l'application VIA locale.
Les sessions démarrées à l'aide de ce flux sont identifiées par SHOW_SOURCE_PUSH_TO_TALK.

Figure 3. Déclenchement PTT
Pour intégrer un bouton matériel de commande vocale à AAOS, consultez l'intégration Automotive Key Input.
Déclenchement d'Appuyer pour parler (ou bouton logiciel)
Le déclenchement de l'interaction vocale à partir de l'UI du système s'effectue à l'aide de AssistUtil. Il s'agit d'une API système masquée qui ne peut être utilisée que par les applications système fournies, telles que l'UI système, qui permet :
- Interagir avec
VoiceInteractionManagerServicepour démarrer des sessions de contrôle vocal. - Déterminez quelle est la VIA actuellement sélectionnée.
Pour présenter de manière dynamique l'application VIA sélectionnée, l'UI système peut utiliser RoleManager et suivre les modifications apportées au titulaire du rôle pour ROLE_ASSISTANT.
Vous trouverez un exemple d'implémentation du déclenchement TTT dans CarSystemUI, AssistantButton.

Figure 4. Déclenchement par appui pour parler
Lecture par l'assistant vocal
Dans le secteur automobile, les notifications publiées dans le centre de notifications et identifiées comme notificationsINBOX ou INBOX_IN_GROUP (par exemple, les messages SMS) incluent un bouton d'action "Lecture", qui permet à l'utilisateur de faire lire les notifications à voix haute par le VIA sélectionné et, éventuellement, de répondre par commande vocale.

Figure 5. Notifications
Pour en savoir plus sur l'implémentation de ce flux, consultez Gérer les commandes de messagerie.
Lancer VIA depuis le lanceur d'applications de la voiture
Comme toute autre application, les VRA peuvent inclure une ou plusieurs activités de lanceur d'applications dans leur fichier manifeste. Il appartient au développeur de l'application et à l'OEM qui accepte de préinstaller cette application de décider de ce que ces activités feront.
Important : Dans Automotive, toutes les activités, y compris les activités système, sont soumises à des restrictions de l'expérience utilisateur pendant la conduite. Si l'expérience que vous souhaitez activer à partir d'une icône du lanceur d'applications doit être disponible pendant la conduite, ajoutez-la à la liste d'autorisation (si vous êtes un OEM) ou annotez l'activité avec des métadonnées distractionOptimized. Pour en savoir plus, consultez les consignes concernant la distraction du conducteur.
DSP et HAL audio
Veillez à consulter les consignes mises à jour concernant l'enregistrement audio permanent et simultané, ainsi que le HAL audio, sur la page Capture simultanée. L'accès à ces API peut avoir un impact significatif sur les performances de la détection de mots clés, comme expliqué dans Répondre aux mots clés.
Autorisations
Accorder des autorisations privilégiées au niveau du système
Étant donné que l'utilisateur ne peut pas accorder d'autorisations privilégiées, si une application VIA en a besoin, les OEM doivent précharger leur APK dans leurs images système et accorder ces autorisations de manière explicite dans leurs builds. Consultez Demander des autorisations.
Pour ce faire, ajoutez une dépendance de liste d'autorisation des droits à votre projet :
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}Ajoutez le fichier d'autorisation de la liste d'autorisation des privilèges système au dossier yourdata/etc/car :
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
Autorisations dangereuses préaccordées
Comme indiqué dans Demander des autorisations, VIA nécessite le consentement de l'utilisateur pour accéder à certaines fonctionnalités. Certaines de ces autorisations sont préaccordées à VoiceInteractionService par défaut (voir DefaultPermissionGrantPolicy.java). Pour en savoir plus sur les autorisations pour les gestionnaires par défaut, consultez Autorisations utilisées uniquement dans les gestionnaires par défaut. Il est également possible d'accorder des autorisations à l'avance à l'aide du fichier de configuration default-permissions.xml. Pour en savoir plus sur les restrictions concernant l'octroi préalable d'autorisations, consultez la section 9 du
Document de définition de compatibilité (CDD) d'Android.
Important : Dans tous les cas, seules les VIA par défaut disposent de ces autorisations préaccordées. Si plusieurs VIA sont préchargés sur le système, le VIA non défini par défaut doit demander explicitement les autorisations à l'utilisateur lors de sa configuration ou de sa première utilisation.
Distribution (pré-installation et déploiement des mises à jour)
Les VDA préinstallés doivent se trouver dans les partitions et les dossiers /product/priv-apps ou /vendor/priv-apps (pour en savoir plus sur les partitions, consultez Présentation des partitions et Créer des partitions de produit).
Dans le second cas, étant donné que la partition du fournisseur peut être mise à jour séparément du système, les applications hébergées ici ne pourront pas accéder aux API système @hide. Selon l'emplacement des applications préinstallées, les mises à jour peuvent être effectuées par OTA (voir Mises à jour OTA) ou par le biais de mises à jour d'applications depuis une plate-forme de téléchargement d'applications.
Personnalisation
Comme indiqué dans Concepts spécifiques à l'automobile, la cohérence et la personnalisation de l'UI/UX sont plus importantes dans l'automobile que dans tout autre facteur de forme. Pour une interopérabilité maximale, nous vous recommandons vivement d'utiliser la bibliothèque Car UI d'AAOS. Cette bibliothèque inclut des composants et des ressources pouvant être intégrés aux applications automobiles conçues pour être personnalisées par les OEM. Ainsi, un seul APK peut être créé de manière à ce que son UI puisse être personnalisée en fonction de la conception de chaque modèle de voiture.