La sélection de l'IVA active est effectuée
ManageAssistActivity
dans CarSettings. Ce flux est déclenché par l'application PackageInstaller
, dans le cadre
dans la section "Applications par défaut" de l'écran "Paramètres".
Figure 1 : Applications par défaut sur l'écran "Paramètres"
L'IVA sélectionnée est exposée au système de deux manières:
- Dans le cadre du
RolesManager
service système - Par
VoiceInteractionManagerService
jusqu'àAssistUtils
API interne.
Vous pouvez obtenir une liste des CVA candidats à l'aide de RolesManager
.
avec le nom de rôle android.app.role.ASSISTANT
.
Déclenchement de mots clés
Android fournit AlwaysOnHotwordDetector
en tant qu'abstraction au-dessus du DSP matériel. Cela constitue un moyen pratique
associer un VoiceInteractionService
à une empreinte vocale pour le mode Always-on basse consommation
la reconnaissance vocale. Il s'agit du flux d'interaction le plus courant et le plus connu, où l'utilisateur
les demandes d'interaction avec une application vocale pour démarrer une nouvelle conversation Voix
les sessions 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 s'affichent en bleu clair, et les composants de VIA en vert.
Déclenchement du PTT
Cela s'applique en cas d'appui long ou court sur le 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, et dans le cas particulier de la voix, elle 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 transmis directement aux récepteurs de projection (Android Auto, par exemple). (ou CarPlay), puis aux appareils connectés en Bluetooth et enfin à l'interface VIA locale. l'application.
Les sessions qui ont démarré à l'aide de ce flux sont identifiées par SHOW_SOURCE_PUSH_TO_TALK
.
Figure 3. Déclenchement du PTT
Pour intégrer un bouton de commande vocale physique à AAOS, consultez l'intégration Automotive Key Input (Saisie de la clé automobile).
Déclenchement de la fonctionnalité Tap-to-Talk (ou bouton logiciel)
Le déclenchement de l'interaction vocale depuis l'interface utilisateur du système s'effectue à l'aide d'AssistUtil. Il s'agit d'une API système cachée qui ne peut être utilisée que des applications système intégrées, telles que l'UI du système, qui permet d'effectuer les opérations suivantes:
- Interagir avec
VoiceInteractionManagerService
pour démarrer des sessions de commande vocale - Déterminez quelle VIA est actuellement sélectionnée.
Pour présenter dynamiquement l'application VIA sélectionnée, l'UI du système peut utiliser
RoleManager
et suivez les modifications apportées au titulaire du rôle ROLE_ASSISTANT
.
Vous trouverez un exemple d'implémentation du déclenchement du TTT dans CarSystemUI, AssistantButton
.
Figure 4. Déclenchement de la fonctionnalité Taper pour parler
Fonctionnalité Tap-to-Read de l'assistant vocal
Dans l'onglet "Automobile", les notifications publiées dans le centre de notifications sont identifiées comme telles NotificationsINBOX
ou INBOX_IN_GROUP
(messages SMS, par exemple)
inclure un bouton d'action de lecture qui permet à l'utilisateur de lire les notifications à voix haute
par l'IVA sélectionnée et, si vous le souhaitez, pour répondre oralement.
Figure 5. Notifications
Pour en savoir plus sur la mise en œuvre de ce flux, consultez Identifiant commandes de messagerie.
Lancer VIA depuis le lanceur d'applications
Comme toute autre application, les Via peuvent inclure une ou plusieurs activités de lanceur sur dans leur fichier manifeste. Il appartient au développeur de l'application et à l'OEM d'accepter pré-installant cette application pour décider ce que ces activités feraient.
Important : Dans l'automobile, toutes les activités, y compris les activités
sont soumis à des restrictions de l’expérience utilisateur lorsque vous conduisez. Si l'expérience que vous souhaitez
à activer depuis une icône de lanceur doit être disponible pendant que vous conduisez.
liste d'autorisation (si vous êtes un OEM) ou annotez l'activité avec distractionOptimized
.
de métadonnées. Pour en savoir plus, consultez
Consignes concernant la distraction des conducteurs
DSP et HAL audio
N'oubliez pas de consulter les nouvelles consignes concernant l'audio permanent simultané enregistrement et HAL audio dans Capture simultanée. L'accès à ces API peut avoir un impact significatif sur les performances des mots clés comme expliqué dans Répondre à mots clés.
Autorisations
Accorder des autorisations privilégiées du système
Étant donné que l'utilisateur ne peut pas accorder d'autorisation privilégiée, si une VIA a besoin les OEM doivent précharger leur APK dans leurs images système et accorder ces autorisations explicitement dans leurs compilations. Voir Demander autorisations.
Pour ce faire, ajoutez à votre projet une dépendance de la liste d'autorisation de droits:
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 à yourdata/etc/car
dossier:
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 pré-accordées dangereuses
Comme indiqué dans
Demander
les autorisations d'accès, la VIA nécessite le consentement de l'utilisateur pour accéder à certaines fonctionnalités. Quelques exemples
autorisations sont pré-accordées à la valeur par défaut VoiceInteractionService
(voir
DefaultPermissionGrantPolicy.java
).
Pour en savoir plus sur les autorisations des gestionnaires par défaut, consultez
Autorisations
utilisés uniquement dans les gestionnaires par défaut. Il est également possible de pré-accorder des autorisations à l'aide du default-permissions.xml
fichier de configuration. Pour en savoir plus sur
concernant le pré-octroi d'autorisations, reportez-vous à la section 9 de l'
un document de définition de compatibilité (CDD).
Important : Dans tous les cas, seule l'IVA par défaut ces autorisations pré-accordées. Si plusieurs VIA sont préchargées dans le système, cette VIA autre que celle par défaut doit demander explicitement les autorisations à l'utilisateur sa configuration ou lors de sa première utilisation.
Distribution (préinstaller et déployer les mises à jour)
Les assistants virtuels préinstallés doivent être inférieurs à /product/priv-apps
ou
partitions et dossiers /vendor/priv-apps
(pour en savoir plus sur les partitions, consultez la page Présentation des partitions et
Créer un produit
partitions).
Dans le second cas, étant donné que la partition des fournisseurs peut être mise à jour séparément à partir du système, les applications hébergées ici ne pourront pas accéder aux API système @hide. Selon l'emplacement des applis préinstallées, les mises à jour peuvent être effectuées en tant qu'OTA (voir Mises à jour OTA) ou via une application 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'interface utilisateur et de l'expérience utilisateur sont plus importantes dans le secteur automobile que dans tout autre facteur de forme. Pour une interopérabilité maximale, l'utilisation d'AAOS Nous vous recommandons vivement d'utiliser la bibliothèque Car UI. Cette bibliothèque inclut des composants et des ressources pouvant être intégrés à Automotive conçues pour être personnalisées par les OEM. De cette façon, un seul APK peut être créé dans un afin que son UI puisse être personnalisée en fonction de la conception de chaque modèle de voiture.