Flussi di integrazione

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.

App predefinite nella schermata Impostazioni

Figura 1. App predefinite nella schermata Impostazioni

Il VIA selezionato è esposto al sistema in due modi:

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

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.

Attivazione hotword

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 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), 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.

Attivazione PTT

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.

Attivazione di Tocca per parlare

Figura 4. Attivazione di Tocca per parlare

Assistente vocale Tocca per leggere (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 far leggere le notifiche dal VIA selezionato e, facoltativamente, di rispondere tramite comandi vocali.

Notifiche

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.