Flussi di integrazione

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.

App predefinite nella schermata Impostazioni

Figura 1. App predefinite nella schermata Impostazioni

La VIA selezionata è esposta al sistema in due modi:

  1. Nell'ambito di RolesManager servizio di sistema
  2. Da VoiceInteractionManagerService tramite AssistUtils 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.

Attivazione hotword

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

Attivazione PTT

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.

Attivazione di Tocca per parlare

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

Notifiche

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.