La selezione della VIA attiva viene effettuata
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
La VIA selezionata è esposta al sistema in due modi:
- Nell'ambito di
RolesManager
servizio di sistema - Da
VoiceInteractionManagerService
tramiteAssistUtils
all'API interna.
È possibile ottenere un elenco di VIA candidati utilizzando RolesManager
con il nome ruolo android.app.role.ASSISTANT
.
Attivazione hotword
Android offre AlwaysOnHotwordDetector
come un'astrazione sopra il DSP hardware. Questo offre un modo conveniente
associa VoiceInteractionService
a un modello vocale per una modalità a basso consumo sempre attivo
riconoscimento vocale. Si tratta del flusso di interazione più comune e conosciuto, in cui l'utente
richieste di interagire con un'applicazione vocale per avviare una nuova conversazione. Voce
sessioni avviate in questo modo sono identificate con SHOW_SOURCE_ASSIST_GESTURE flag
.
Figura 2. Attivazione hotword
Legenda. I servizi di sistema vengono visualizzati in azzurro e i componenti VIA in verde.
Attivazione PTT
Questo vale per la pressione prolungata o corta del pulsante hardware. In AAOS, il PTT viene gestito CarInputService. In un'implementazione predefinita, questo servizio gestisce gli eventi di input ricevuti tramite l'HAL del veicolo e, nel caso particolare della voce un'interazione, applica la seguente logica agli eventi chiave:
- Gli eventi PTT brevi (
KeyEvent.KEYCODE_VOICE_ASSIST
) sono indirizzati aVoiceInteractionManagerService
per avviare una nuova sessione vocale. - Gli eventi PTT lunghi vengono trasmessi in prima persona ai ricevitori di proiezione (ad esempio, Android Auto o CarPlay), quindi ai dispositivi connessi tramite Bluetooth e infine all'emittente VIA locale. dell'app.
Le sessioni che hanno iniziato a utilizzare questo flusso sono identificate con SHOW_SOURCE_PUSH_TO_TALK
.
Figura 3. Attivazione PTT
Per integrare un pulsante del controllo vocale hardware nell'AAOS, fai riferimento all'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 app di sistema in bundle, come l'interfaccia utente di sistema, che consente:
- Interazione con
VoiceInteractionManagerService
per avviare sessioni con controllo vocale. - Stabilisci qual è il VIA attualmente selezionato.
Per presentare dinamicamente l'app VIA selezionata, l'UI di sistema può utilizzare
RoleManager
e segui le modifiche relative al titolare del ruolo per ROLE_ASSISTANT
.
Un esempio di come implementare l'attivazione TTT è disponibile in CarSystemUI, AssistantButton
.
Figura 4. Attivazione di Tocca per parlare
Assistente vocale Tocca per leggere (TTR)
In Auto e motori, le notifiche pubblicate nel Centro notifiche sono 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 ad alta voce.
dalla VIA selezionata e, facoltativamente, rispondere con la voce.
Figura 5. Notifiche
Per ulteriori informazioni su come implementare questo flusso, consulta Handle comandi di messaggistica.
Avvia VIA da Avvio app
Come per qualsiasi altra app, le ViA possono includere una o più attività Avvio app su il relativo file manifest. Spetta allo sviluppatore dell'app e all'OEM l'accettazione hai già installato l'app per decidere cosa fare.
Importante: In Auto e motori, tutte le attività, incluse quelle di sistema
sono soggette a limitazioni UX durante la guida. Se l'esperienza che vuoi
per consentire l'attivazione da un'icona in Avvio applicazioni deve essere disponibile durante la guida. Puoi aggiungerla
nella lista consentita (se sei un OEM) o annota l'attività con distractionOptimized
metadati. Per ulteriori informazioni, vedi
Linee guida sulle distrazioni per i conducenti.
DSP e HAL audio
Assicurati di leggere le linee guida aggiornate relative all'audio sempre attivo in contemporanea registrazione audio e HAL in Acquisizione simultanea. L'accesso a queste API può avere un impatto significativo sulle prestazioni della hotword il rilevamento, come spiegato all'indirizzo Risposta alle hotword.
Autorizzazioni
Concedi autorizzazioni con privilegi di sistema
Dato che l'autorizzazione con privilegi non può essere concessa dall'utente, se una VIA necessita di uno degli gli OEM devono precaricare l'APK nelle immagini di sistema e concedere queste autorizzazioni esplicitamente nelle loro build. Consulta Richiedi autorizzazioni.
Per farlo, aggiungi una dipendenza alla lista consentita di privilegi al tuo progetto:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Aggiungi il file delle autorizzazioni della lista consentita dei privilegi di sistema a yourdata/etc/car
cartella:
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 nelle
Richiedi
autorizzazioni, VIA richiede il consenso dell'utente per accedere a determinate funzionalità. Alcuni di questi
le autorizzazioni vengono preconcesse all'istanza predefinita VoiceInteractionService
(vedi
DefaultPermissionGrantPolicy.java
).
Per ulteriori informazioni sulle autorizzazioni per i gestori predefiniti, consulta
Autorizzazioni
e utilizzate solo nei gestori predefiniti. È anche possibile concedere in anticipo le autorizzazioni utilizzando l'default-permissions.xml
di configurazione del deployment. Per maggiori dettagli su
restrizioni relative alla pre-concessione delle autorizzazioni, consulta la Sezione 9 della Guida
il Compatibility Definition Document (CDD).
Importante: In tutti i casi, solo la VIA predefinita avrebbe che le autorizzazioni sono state pre-concesse. Se nel sistema sono precaricati più di un VIA, il VIA non predefinito deve richiedere esplicitamente le autorizzazioni all'utente nell'ambito durante la configurazione o al primo utilizzo.
Distribuzione (aggiornamenti di preinstallazione e deployment)
I VIA preinstallati devono rientrare nel /product/priv-apps
o
/vendor/priv-apps
partizioni e cartelle (scopri di più sulle partizioni nella pagina Panoramica delle partizioni e
Crea prodotto
partizioni di memoria).
Nel secondo caso, dato che la partizione del fornitore potrebbe essere aggiornata separatamente dal sistema, le app ospitate qui non potranno accedere alle API di sistema @nascondi. A seconda della posizione delle app preinstallate, gli aggiornamenti potrebbero essere eseguiti tramite OTA (leggi gli aggiornamenti OTA) o tramite app. aggiornamenti da uno store.
Personalizzazione
Come menzionato in Concetti specifici relativi al settore automobilistico, La coerenza e la personalizzazione dell'UI/UX sono più importanti nel settore automobilistico che in qualsiasi altro fattore di forma. Per la massima interoperabilità, l'uso del file AAOS Si consiglia vivamente di utilizzare la libreria UI dell'auto. Questa libreria include componenti e risorse che possono essere integrati in progettate per essere personalizzate dagli OEM. In questo modo, un singolo APK può essere creato in modo che l'UI possa essere personalizzata in base al design di ciascun modello di auto.