Flux d'intégration

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".

Applications par défaut sur 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:

  1. Dans le cadre du RolesManager service système
  2. 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.

Déclenchement de mots clés

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 vers VoiceInteractionManagerService 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.

Déclenchement du PTT

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.

Déclenchement de la fonctionnalité Taper pour parler

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 Notifications INBOX 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.

Notifications

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.