La sélection du VIA actif se fait par ManageAssistActivity
dans CarSettings. Ce flux est déclenché par l'application PackageInstaller
, dans le cadre de la section Applications par défaut de l'écran Paramètres.
Figure 1. Applications par défaut sur l'écran Paramètres
Le VIA sélectionné est exposé au système de deux manières :
- Dans le cadre du service système
RolesManager
- Par
VoiceInteractionManagerService
via l’API interneAssistUtils
.
Une liste de VIA candidats peut être obtenue à l'aide RolesManager
avec le nom de rôle android.app.role.ASSISTANT
.
Déclenchement de mots clés
Android fournit AlwaysOnHotwordDetector comme abstraction au-dessus du DSP matériel. Cela constitue un moyen pratique d’associer un VoiceInteractionService
à un modèle vocal pour une reconnaissance vocale toujours active à faible consommation. Il s'agit du flux d'interaction le plus courant et le plus connu, dans lequel l'utilisateur demande à interagir avec une application vocale (VA) pour lancer une nouvelle conversation. Les sessions vocales démarrées de cette manière sont identifiées par SHOW_SOURCE_ASSIST_GESTURE flag
.
Figure 2. Déclenchement de mots clés
Légende. 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 matériel. Dans AAOS, 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 Vehicle HAL, et dans le cas particulier d'une interaction vocale, il applique la logique suivante aux événements clés :
- Les événements PTT courts (
KeyEvent.KEYCODE_VOICE_ASSIST
) sont dirigés versVoiceInteractionManagerService
pour 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 par SHOW_SOURCE_PUSH_TO_TALK
.
Figure 3. Déclenchement PTT
Pour intégrer un bouton de commande vocale matériel à AAOS, voir Intégration de l'entrée de clé automobile .
Déclenchement Tap-to-Talk (ou bouton logiciel)
Le déclenchement de l'interaction vocale à partir de l'interface utilisateur du système se fait à l'aide de AssistUtil . Il s'agit d'une API système cachée qui ne peut être utilisée que par les applications système groupées telles que l'interface utilisateur système qui permet :
- Interagir avec
VoiceInteractionManagerService
pour démarrer des sessions de commande vocale. - Déterminez quel est le VIA actuellement sélectionné.
Pour présenter dynamiquement l'application VIA sélectionnée, l'interface utilisateur du système peut utiliser RoleManager
et suivre les modifications apportées au titulaire du rôle pour ROLE_ASSISTANT
. Un exemple de la façon d'implémenter le déclenchement TTT peut être trouvé dans CarSystemUI, AssistantButton
.
Figure 4. Déclenchement Tap-to-Talk
Assistant vocal Tap-to-Read (TTR)
Dans l'automobile, les notifications publiées dans le centre de notifications identifiées comme notificationsINBOX
ou INBOX_IN_GROUP
(par exemple, les messages SMS) incluent un bouton d'action Lire, qui permet à l'utilisateur de faire lire les notifications à haute voix par le VIA sélectionné et, éventuellement, de répondre vocalement.Figure 5. Notifications
Pour plus d'informations sur la façon d'implémenter ce flux, consultez Gérer les commandes de messagerie .
Lancer VIA depuis le lanceur de voiture
Comme toute autre application, les VIA peuvent inclure une ou plusieurs activités de lancement dans leur manifeste. Il appartient au développeur de l'application et à l'OEM qui accepte de préinstaller cette application de décider de l'effet de ces activités.
Important. Dans l'automobile, toutes les activités, y compris les activités système, sont soumises à des restrictions UX pendant la conduite. Si l'expérience que vous souhaitez activer à partir d'une icône de lanceur doit être disponible pendant la conduite, ajoutez-la à la liste verte (si vous êtes un OEM) ou annotez l'activité avec des métadonnées distractionOptimized
. Pour plus d'informations, consultez Directives sur la distraction du conducteur .
DSP et HAL audio
Assurez-vous de consulter les directives mises à jour concernant l'enregistrement audio simultané permanent et l'audio HAL sur Capture simultanée . L'accès à ces API peut avoir un impact significatif sur les performances de détection des 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 un VIA en a besoin, les OEM doivent précharger leur APK dans leurs images système et accorder ces autorisations explicitement dans leurs builds. Voir 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 liste blanche 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>
Pré-octrois d'autorisations dangereuses
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 accordées au préalable au VoiceInteractionService
par défaut (voir DefaultPermissionGrantPolicy.java
). Pour plus d'informations sur les autorisations des gestionnaires par défaut, consultez Autorisations utilisées uniquement dans les gestionnaires par défaut . Il est également possible de pré-accorder des autorisations à l'aide du fichier de configuration default-permissions.xml
. Pour plus de détails 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, seul le VIA par défaut disposerait de ces autorisations pré-accordées. Si le système dispose de plusieurs VIA préchargés, le VIA autre que celui par défaut doit demander explicitement des autorisations à l'utilisateur dans le cadre de sa configuration ou lors de la première utilisation.
Distribution (préinstallation et déploiement des mises à jour)
Les VIA préinstallés doivent résider sous 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 du système @hide. En fonction de l'emplacement des applications préinstallées, les mises à jour peuvent être effectuées sous forme d'OTA (voir Mises à jour OTA ) ou via des mises à jour d'applications depuis un magasin d'applications.
Personnalisation
Comme mentionné 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, l'utilisation de la bibliothèque AAOS Car UI est fortement recommandée. Cette bibliothèque comprend des composants et des ressources pouvant être intégrés dans des applications automobiles conçues pour être personnalisées par les constructeurs OEM. De cette façon, un seul APK peut être construit de manière à ce que son interface utilisateur puisse être personnalisée en fonction du design de chaque modèle de voiture.