La selezione del VIA attivo viene effettuata da ManageAssistActivity
in CarSettings. Questo flusso viene attivato dall'app PackageInstaller
, come parte della sezione App predefinite della schermata Impostazioni.
Figura 1. App predefinite nella schermata Impostazioni
Il VIA selezionato viene esposto al sistema in due modalità:
- Come parte del servizio di sistema
RolesManager
- Da
VoiceInteractionManagerService
tramite l'API internaAssistUtils
.
È possibile ottenere un elenco di VIA candidati utilizzando RolesManager
con il nome del ruolo android.app.role.ASSISTANT
.
Attivazione di hotword
Android fornisce AlwaysOnHotwordDetector come astrazione sopra il DSP hardware. Ciò fornisce un modo conveniente 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 conosciuto, in cui l'utente richiede di interagire con un'applicazione vocale (VA) per avviare una nuova conversazione. Le sessioni vocali avviate in questo modo vengono identificate con SHOW_SOURCE_ASSIST_GESTURE flag
.
Figura 2. Attivazione di hotword
Leggenda. I servizi di sistema appaiono in azzurro, i componenti VIA in verde.
Attivazione del PTT
Questo vale per la pressione lunga o breve del pulsante hardware. In AAOS, PTT è gestito 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:
- Brevi eventi PTT (
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), quindi 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 del PTT
Per integrare un pulsante hardware di controllo vocale in AAOS, vedere Integrazione Automotive Key Input .
Attivazione Tocca per parlare (o pulsante software)
L'attivazione dell'interazione vocale dall'interfaccia utente del 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 abilita:
- Interagire con
VoiceInteractionManagerService
per avviare sessioni di controllo vocale. - Determina qual è il VIA attualmente selezionato.
Per presentare dinamicamente l'app VIA selezionata, l'interfaccia utente del sistema può utilizzare RoleManager
e seguire le modifiche sul titolare del ruolo per ROLE_ASSISTANT
. Un esempio di come implementare l'attivazione TTT è disponibile in CarSystemUI, AssistantButton
.
Figura 4. Attivazione Tocca per parlare
Assistente vocale Tap-to-Read (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 leggere ad alta voce le notifiche dal VIA selezionato e, facoltativamente, di rispondere a voce.Figura 5. Notifiche
Per ulteriori informazioni su come implementare questo flusso, vedere Gestire i comandi di messaggistica .
Avvia VIA dal launcher per auto
Come qualsiasi altra app, i VIA possono includere una o più attività di avvio nel manifest. Spetta allo sviluppatore dell'app e all'OEM che accettano di preinstallare questa app per decidere cosa farebbero queste attività.
Importante. Nel settore automobilistico, tutte le attività, comprese le attività di sistema, sono soggette a restrizioni UX durante la guida. Se l'esperienza che desideri abilitare 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, vedere Linee guida sulla distrazione del conducente .
DSP e HAL audio
Assicurati di rivedere le linee guida aggiornate relative alla registrazione audio sempre attiva simultanea e all'HAL audio in Acquisizione simultanea . L'accesso a queste API può avere un impatto significativo sulle prestazioni del rilevamento delle hotword, come spiegato in Rispondere alle hotword .
Autorizzazioni
Concedere autorizzazioni con privilegi di sistema
Dato che 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 tali autorizzazioni esplicitamente nelle loro build. Consulta Richiedere autorizzazioni .
Per fare ciò, aggiungi una dipendenza della lista consentita dei privilegi al tuo progetto:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Aggiungi il file dei permessi 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>
Pre-concessioni di autorizzazioni pericolose
Come indicato in Richiedi permessi , VIA richiede il consenso dell'utente per accedere a determinate funzionalità. Alcune di queste autorizzazioni sono preconcesse al VoiceInteractionService
predefinito (vedi DefaultPermissionGrantPolicy.java
). Per ulteriori informazioni sulle autorizzazioni per i gestori predefiniti, consulta Autorizzazioni utilizzate solo nei gestori predefiniti . È anche possibile pre-concedere le autorizzazioni utilizzando il file di configurazione default-permissions.xml
. Per dettagli sulle restrizioni riguardanti la pre-concessione delle autorizzazioni, vedere la Sezione 9 nel Documento di definizione della compatibilità Android (CDD) .
Importante. In tutti i casi, solo il VIA predefinito avrà queste autorizzazioni preconcesse. Se nel sistema è precaricato più di un VIA, il VIA non predefinito deve richiedere esplicitamente le autorizzazioni all'utente come parte della configurazione o durante il primo utilizzo.
Distribuzione (preinstallare e distribuire gli aggiornamenti)
I VIA preinstallati devono trovarsi nelle partizioni e cartelle /product/priv-apps
o /vendor/priv-apps
(vedere ulteriori informazioni sulle partizioni in Panoramica delle partizioni e Creazione di partizioni del prodotto ).
Nel secondo caso, dato che la partizione del fornitore potrebbe essere aggiornata separatamente dal sistema, le app ospitate qui non saranno in grado di 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 menzionato in Concetti specifici del settore automobilistico , la coerenza e la personalizzazione dell'interfaccia utente/UX sono più importanti nel settore automobilistico che in qualsiasi altro fattore di forma. Per la massima interoperabilità, si consiglia vivamente l'uso della libreria AAOS Car UI . Questa libreria include componenti e risorse che possono essere integrati nelle app automobilistiche progettate per essere personalizzate dagli OEM. In questo modo, è possibile creare un singolo APK in modo tale che la sua interfaccia utente possa essere personalizzata in base al design di ciascun modello di auto.