Flussi di integrazione

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.

App predefinite nella schermata Impostazioni

Figura 1. App predefinite nella schermata Impostazioni

Il VIA selezionato viene esposto al sistema in due modalità:

  1. Come parte del servizio di sistema RolesManager
  2. Da VoiceInteractionManagerService tramite l'API interna AssistUtils .

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

Attivazione di hotword

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

Attivazione del PTT

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 .

Attivazione Tocca per parlare

Figura 4. Attivazione Tocca per parlare

Assistente vocale Tap-to-Read (TTR)

In Automotive, le notifiche pubblicate nel Centro notifiche identificate come notifiche INBOX 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.

Notifiche

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.