La sélection de l'VIA active 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 "Paramètres".

Figure 1. Applications par défaut sur l'écran "Paramètres"
L'VIA sélectionnée est exposée au système de deux manières :
- Dans le cadre du
RolesManagerservice système - Par le
VoiceInteractionManagerServicevia l'API interneAssistUtils.
Vous pouvez obtenir une liste des VIA candidates à l'aide de RolesManager
avec le nom de rôle android.app.role.ASSISTANT.
Déclenchement par mot clé
Android fournit AlwaysOnHotwordDetector
comme abstraction au-dessus du DSP matériel. Cela permet d'associer facilement un VoiceInteractionService à une empreinte vocale pour une reconnaissance vocale permanente à 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 pour démarrer une nouvelle conversation. Les sessions vocales démarrées de cette manière sont identifiées avec SHOW_SOURCE_ASSIST_GESTURE flag.
Figure 2. Déclenchement par mot clé
Légendaire. Les services système apparaissent en bleu clair, les composants VIA en vert.
Déclenchement PTT
Cela s'applique à une pression longue ou courte sur un bouton physique. 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 (par exemple, Android Auto ou CarPlay), puis aux appareils connectés via Bluetooth et enfin à l'application VIA locale.
Les sessions démarrées à l'aide de ce flux sont identifiées avec SHOW_SOURCE_PUSH_TO_TALK.

Figure 3. Déclenchement PTT
Pour intégrer un bouton matériel de commande vocale à AAOS, consultez Intégration de la saisie de clé automobile.
Déclenchement par appui pour parler (ou bouton logiciel)
Le déclenchement de l'interaction vocale à partir de l'UI 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 des applications système groupées telles que l'UI système qui permet :
- d'interagir avec
VoiceInteractionManagerServicepour démarrer des sessions de commande vocale ; - de déterminer quelle est l'VIA actuellement sélectionnée.
Pour présenter dynamiquement l'application VIA sélectionnée, l'UI système peut utiliser
RoleManager
et suivre les modifications apportées au détenteur 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
Appui pour lire (TTR) de l'assistant vocal
Dans Automotive, les notifications publiées dans le centre de notifications identifiées commeINBOX ou INBOX_IN_GROUP notifications (par exemple, les messages SMS)
incluent un bouton d'action "Lire", qui permet à l'utilisateur de faire lire les notifications à voix haute
par l'VIA sélectionnée et, éventuellement, de répondre par la voix.

Figure 5. Notifications
Pour en savoir plus sur l'implémentation de ce flux, consultez Gérer les commandes de messagerie.
Lancer l'VIA depuis le lanceur d'applications de la voiture
Comme toute autre application, les VIA peuvent inclure une ou plusieurs activités de lancement dans leur fichier manifeste. Il appartient au développeur d'applications 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 d'expérience utilisateur pendant la conduite. Si l'expérience que vous souhaitez
activer à partir d'une icône de lancement doit être disponible pendant la conduite, ajoutez-la à la
liste d'autorisation (si vous êtes un OEM) ou annotez l'activité avec distractionOptimized
métadonnées. 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 simultané et le HAL audio dans 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 système
Étant donné que l'utilisateur ne peut pas accorder d'autorisation privilégiée, si une VIA en a besoin, les OEM doivent précharger leur APK dans leurs images système et accorder ces autorisations explicitement dans leurs builds. Consultez Demander des autorisations.
Pour ce faire, ajoutez une dépendance de liste d'autorisation de privilèges à votre projet :
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}Ajoutez le fichier d'autorisation de la liste d'autorisation de 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, l'VIA nécessite le consentement utilisateur pour accéder à certaines fonctionnalités. Certaines de ces
autorisations sont pré-accordées au 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 default-permissions.xml
fichier de configuration. 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é Android
(CDD).
Important. Dans tous les cas, seule l'VIA par défaut se verra accorder ces autorisations à l'avance. Si plusieurs VIA sont préchargées dans le système, l'VIA non par défaut doit demander explicitement des autorisations à l'utilisateur lors de sa configuration ou de sa première utilisation.
Distribution (préinstallation et déploiement des mises à jour)
Les VIA préinstallées doivent se trouver dans les partitions et 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. En fonction de l'emplacement des applications préinstallées, les mises à jour peuvent être effectuées via une OTA (voir Mises à jour OTA) ou via des mises à jour d'applications depuis une boutique d'applications.
Personnalisation
Comme indiqué dans Concepts spécifiques à Automotive, 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, il est fortement recommandé d'utiliser la bibliothèque AAOS Car UI. Cette bibliothèque inclut des composants et des ressources qui peuvent être intégrés dans des applications automobiles conçues pour être personnalisées par les OEM. De cette façon, 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.