La selezione del VIA attivo viene eseguita da
ManageAssistActivity
in CarSettings. Questo flusso viene attivato dall'app PackageInstaller
, nell'ambito della sezione App predefinite della schermata Impostazioni.
Figura 1. App predefinite nella schermata Impostazioni
Il VIA selezionato è esposto al sistema in due modi:
- Nell'ambito del servizio di sistema
RolesManager
- Da
VoiceInteractionManagerService
tramite l'API internaAssistUtils
.
Un elenco di VIA candidati può essere ottenuto utilizzando RolesManager
con il nome del ruolo android.app.role.ASSISTANT
.
Attivazione hotword
Android fornisce AlwaysOnHotwordDetector come un'astrazione sopra il DSP hardware. Questo offre un modo pratico per associare un VoiceInteractionService
a un modello vocale per il riconoscimento vocale sempre attivo a basso consumo energetico. Questo è il flusso di interazione più comune e noto, in cui l'utente richiede di interagire con un'applicazione vocale (AV) per avviare una nuova conversazione. Le sessioni di Voice avviate in questo modo sono identificate con SHOW_SOURCE_ASSIST_GESTURE flag
.
Figura 2. Attivazione hotword
Legenda. I servizi di sistema vengono visualizzati in blu chiaro, mentre i componenti VIA in verde.
Attivazione PTT
Questo vale per una pressione breve o prolungata del pulsante hardware. In AAOS, la PTT è gestita da CarInputService. In un'implementazione predefinita, questo servizio gestisce gli eventi di input ricevuti tramite l'HAL del veicolo e, nel caso particolare dell'interazione vocale, applica la seguente logica agli eventi chiave:
- Gli eventi PTT brevi (
KeyEvent.KEYCODE_VOICE_ASSIST
) vengono indirizzati aVoiceInteractionManagerService
per avviare una nuova sessione vocale. - Gli eventi PTT lunghi vengono prima trasmessi ai ricevitori di proiezione (ad esempio Android Auto o CarPlay), poi ai dispositivi connessi tramite Bluetooth e infine all'app VIA locale.
Le sessioni avviate utilizzando questo flusso sono identificate con SHOW_SOURCE_PUSH_TO_TALK
.
Figura 3. Attivazione PTT
Per integrare un pulsante di controllo vocale hardware in AAOS, consulta l'integrazione di Automotive Key Input.
Attivazione di Tocca per parlare (o pulsante software)
L'attivazione dell'interazione vocale dall'interfaccia utente di sistema viene eseguita utilizzando AssistUtil. Si tratta di un'API di sistema nascosta che può essere utilizzata solo dalle app di sistema in bundle, come l'interfaccia utente di sistema, che consente di:
- Interazione con
VoiceInteractionManagerService
per avviare le sessioni di controllo vocale. - Determina quale sia il VIA attualmente selezionato.
Per presentare in modo dinamico l'app VIA selezionata, l'interfaccia utente di sistema può utilizzare
RoleManager
e seguire le modifiche apportate al proprietario del ruolo per ROLE_ASSISTANT
.
Un esempio di come implementare l'attivazione di TTT è disponibile in CarSystemUI, AssistantButton
.
Figura 4. Attivazione di Tocca per parlare
Assistente vocale Tocca per leggere (TTR)
In Automotive, le notifiche pubblicate nel Centro notifiche identificate come notificheINBOX
o INBOX_IN_GROUP
(ad esempio messaggi SMS) includono un pulsante di azione Riproduci, che consente all'utente di far leggere le notifiche dal VIA selezionato e, facoltativamente, di rispondere tramite comandi vocali.
Figura 5. Notifiche
Per ulteriori informazioni su come implementare questo flusso, consulta Gestire i comandi di messaggistica.
Avviare VIA dall'avvio app dell'auto
Come qualsiasi altra app, le VIA possono includere una o più attività di Avvio nel loro file manifest. Spetta allo sviluppatore dell'app e all'OEM che accetta di preinstallare questa app decidere cosa faranno queste attività.
Importante. In Automotive, tutte le attività, incluse quelle di sistema, sono soggette a limitazioni dell'esperienza utente durante la guida. Se l'esperienza che vuoi attivare da un'icona di Avvio deve essere disponibile durante la guida, aggiungila alla lista consentita (se sei un OEM) o annota l'attività con i metadati distractionOptimized
. Per ulteriori informazioni, consulta le linee guida sulla distrazione del conducente.
DSP e HAL audio
Assicurati di leggere le linee guida aggiornate relative alla registrazione audio sempre attiva e all'HAL audio in Acquisizione simultanea. L'accesso a queste API potrebbe avere un impatto significativo sul rendimento del rilevamento delle hotword, come spiegato nella sezione Rispondi alle hotword.
Autorizzazioni
Concedi autorizzazioni con privilegi di sistema
Poiché l'autorizzazione privilegiata non può essere concessa dall'utente, se un VIA ne ha bisogno, gli OEM devono precaricare il proprio APK nelle immagini di sistema e concedere queste autorizzazioni esplicitamente nelle build. Vedi Richiedi autorizzazioni.
A tale scopo, aggiungi una dipendenza dalla lista consentita dei privilegi al progetto:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Aggiungi il file di autorizzazione della lista consentita dei privilegi di sistema alla cartella 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>
Preconcessioni di autorizzazioni pericolose
Come indicato in
Richiedi
autorizzazioni, VIA richiede il consenso dell'utente per accedere ad alcune funzionalità. Alcune di queste autorizzazioni sono preconcedute al VoiceInteractionService
predefinito (vedi DefaultPermissionGrantPolicy.java
). Per ulteriori informazioni sulle autorizzazioni per i gestori predefiniti, consulta Autorizzazioni utilizzate solo nei gestori predefiniti. È anche possibile concedere in anticipo le autorizzazioni utilizzando il default-permissions.xml
file di configurazione. Per informazioni dettagliate sulle limitazioni relative alla preassegnazione delle autorizzazioni, consulta la Sezione 9 del
Documento di definizione della compatibilità (CDD) di Android.
Importante. In tutti i casi, solo il VIA predefinito avrebbe queste autorizzazioni preconcedute. Se il sistema ha più di un VIA precaricato, il VIA non predefinito deve richiedere esplicitamente le autorizzazioni all'utente nell'ambito della sua configurazione o durante il primo utilizzo.
Distribuzione (preinstallazione e aggiornamenti di deployment)
I VIA preinstallati devono trovarsi in partizioni e cartelle /product/priv-apps
o
/vendor/priv-apps
(scopri di più sulle partizioni nella sezione Panoramica delle partizioni e
Creare partizioni dei prodotti).
Nel secondo caso, poiché la partizione del fornitore potrebbe essere aggiornata distintamente dal sistema, le app ospitate qui non potranno accedere alle API di sistema @hide. A seconda della posizione delle app preinstallate, gli aggiornamenti potrebbero essere eseguiti come OTA (vedi Aggiornamenti OTA) o tramite aggiornamenti delle app da un app store.
Personalizzazione
Come accennato in Concetti specifici per il settore auto e motori, la coerenza e la personalizzazione dell'UI/UX sono più importanti nel settore auto e motori rispetto a qualsiasi altro fattore di forma. Per la massima interoperabilità, è vivamente consigliato l'utilizzo della libreria UI per auto di AAOS. Questa libreria include componenti e risorse che possono essere integrati nelle app per il settore auto e motori progettate per essere personalizzate dagli OEM. In questo modo, è possibile creare un singolo APK in modo che la relativa UI possa essere personalizzata in base al design di ogni modello di auto.