Assistente Google per Wear OS

Gli assistenti vocali offrono scenari rapidi ed efficienti ovunque ti trovi. Le interazioni vocali sugli indossabili sono dinamiche, il che significa che l'utente può parlare al polso senza necessariamente guardare il dispositivo in attesa di una risposta.

Con le Azioni app dell'assistente, gli sviluppatori Android possono estendere le app per Wear OS all'Assistente Google, inoltrando rapidamente gli utenti nelle loro app con comandi vocali come "Hey Google, inizia la mia corsa su ExampleApp".

Limitazioni

L'assistente su Wear supporta le interazioni delle attività con il monitoraggio dei contenuti multimediali e dell'attività fisica. Per le indicazioni sull'integrazione delle app multimediali con l'assistente, vedi Assistente Google e le app multimediali. Per le app Wear OS sono supportati i seguenti intent integrati per salute e fitness:

Come funziona

Le Azioni app estendono le funzionalità delle app all'assistente, consentendo agli utenti di accedere rapidamente alle funzionalità delle app tramite comandi vocali. Quando un utente indica all'assistente che vuole utilizzare la tua app, l'assistente cerca le Azioni app registrate nella tua app nella risorsa shortcuts.xml dell'app.

Le Azioni app sono descritte in shortcuts.xml con elementi Capacità di Android. Gli elementi di capacità associano gli intent integrati (BII), che sono descrizioni semantiche di una funzionalità dell'app, con istruzioni di completamento, ad esempio un modello di link diretto. Quando carichi la tua app utilizzando Google Play Console, Google registra le funzionalità dichiarate in shortcuts.xml, rendendole disponibili per gli utenti che possono attivarle dall'assistente.

Flusso Azioni app

Il diagramma precedente mostra un utente che mette in pausa l'allenamento in un'app autonoma. Vengono eseguiti i seguenti passaggi:

  1. L'utente invia una richiesta vocale all'assistente per l'app indossabile specifica.
  2. L'assistente abbina la richiesta a un modello preaddestrato (BII) ed estrae tutti i parametri trovati nella query che sono supportati dall'intent integrato.
  3. Nell'esempio, l'assistente associa la query all'intent integrato PAUSE_EXERCISE ed estrae il parametro del nome dell'allenamento "escursionismo".
  4. L'app viene attivata tramite la definizione di completamento delle funzionalità shortcuts.xml per questo intent integrato.
  5. L'app elabora l'evasione e mette in pausa l'allenamento.

Connettività

Lo sviluppo di Azioni app varia a seconda della funzionalità dell'app nell'ecosistema di dispositivi basato su Android.

  • Con tethering: quando un'app indossabile dipende dall'app mobile per la piena funzionalità, le query degli utenti rivolte all'assistente tramite lo smartwatch vengono soddisfatte sul dispositivo mobile. Affinché questo scenario funzioni correttamente, la logica di fulfillment delle Azioni app deve essere integrata nell'app mobile.

  • Senza tethering: quando un'app indossabile è indipendente da un'app mobile per la funzionalità, l'assistente soddisfa le query degli utenti localmente sullo smartwatch. Le funzionalità Azioni app devono essere integrate nell'app indossabile affinché queste richieste vengano soddisfatte correttamente.

Aggiungi funzionalità vocali a Wear

Per integrare le Azioni app con l'app per Wear OS, segui questi passaggi:

  1. Abbina la funzionalità in-app per cui vuoi attivare la voce a un intent integrato corrispondente.
  2. Dichiara il supporto per le scorciatoie Android nella risorsa AndroidManifest.xml dell'attività principale.

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. Aggiungi un elemento <intent-filter> al file AndroidManifest.xml. L'assistente può usare i link diretti per connettersi ai contenuti della tua app.

  4. Crea scorciatoie.xml per fornire i dettagli di completamento per i tuoi intent integrati. Puoi usare gli elementi delle scorciatoie capability per dichiarare all'assistente gli intent integrati supportati dalla tua app. Per ulteriori informazioni, vedi Aggiungere funzionalità.

  5. In shortcuts.xml, implementa una funzionalità per l'intent integrato che hai scelto. L'esempio seguente mostra una funzionalità per l'intent integrato START_EXERCISE:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- This is a sample shortcuts.xml -->
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
      <capability android:name="actions.intent.START_EXERCISE">
        <intent
          android:action="android.intent.action.VIEW"
          android:targetPackage="YOUR_UNIQUE_APPLICATION_ID"
          android:targetClass="YOUR_TARGET_CLASS">
          <!-- Eg. name = "Running" -->
          <parameter
            android:name="exercise.name"
            android:key="name"/>
          <!-- Eg. duration = "PT1H" -->
          <parameter
            android:name="exercise.duration"
            android:key="duration"/>
        </intent>
      </capability>
    </shortcuts>
    
  6. Se applicabile, estendi il supporto per le varianti vocali dell'utente utilizzando un inventario in linea, che rappresenta funzionalità e contenuti nella tua app.

    <capability android:name="actions.intent.START_EXERCISE">
      <intent
        android:targetPackage="com.example.myapp"
        android:targetClass="com.example.myapp.ExerciseActivity">
        <parameter android:name="exercise.name" android:key="exercise" />
      </intent>
    </capability>
    
    <shortcut android:shortcutId="CARDIO_RUN">
      <capability-binding android:key="actions.intent.START_EXERCISE">
        <parameter-binding
          android:key="exercise.name"
          android:value="@array/run_names" />
        </capability-bindig>
    </shortcut>
    
  7. Aggiorna la logica della tua app per gestire il completamento delle Azioni app in arrivo.

    //FitMainActivity.kt
    
    private fun handleIntent(data: Uri?) {
        var actionHandled = true
        val startExercise = intent?.extras?.getString(START_EXERCISE)
    
        if (startExercise != null){
            val type = FitActivity.Type.find(startExercise)
            val arguments = Bundle().apply {
                putSerializable(FitTrackingFragment.PARAM_TYPE, type)
            }
            updateView(FitTrackingFragment::class.java, arguments)
        }
        else{
            showDefaultView()
            actionHandled = false
        }
        notifyActionSuccess(actionHandled)
    }
    

Visualizzare l'anteprima, testare e pubblicare l'app

Le Azioni app forniscono strumenti per esaminare e testare la tua app. Per informazioni più dettagliate, consulta la pagina plug-in dell'Assistente Google per Android Studio. Dopo aver testato l'app e creato una release di test, puoi richiedere una revisione delle Azioni app ed eseguirne il deployment. Consulta le seguenti best practice per avere indicazioni sulla gestione degli errori comuni.

Best practice

Crea un'esperienza utente positiva durante l'integrazione della tua app con l'assistente seguendo queste best practice consigliate.

Mostra una schermata di conferma corrispondente o pertinente, insieme al feedback aptico e audio, per rispondere alla richiesta di un utente, quando viene completata correttamente una richiesta o quando segnala un errore.

Qualità di base Migliore qualità Migliore qualità
  • Crea un intent per iniziare a ConfirmationActivity da un'attività.
  • Crea un intent per iniziare a ConfirmationActivity da un'attività.
  • Riproduci un suono E un feedback aptico per indicare lo stato attuale.
  • Crea un intent per iniziare a ConfirmationActivity da un'attività.
  • Text-to-Speech (TTS) e feedback aptico per indicare un errore o un esito positivo.

Errori comuni e soluzioni

Per i seguenti casi di errore, utilizza la seguente app consigliata per i messaggi ConfirmationActivity.

Caso di errore Esempio di interazione dell'utente Risposta dell'app
Attività già in corso "Inizia il mio NomeAllenamento"
"Riprendi il mio NomeAllenamento"
Errore di visualizzazione: Attività già in corso."
Nessuna attività avviata "Metti in pausa/interrompi il mio AllenamentoName" Errore di visualizzazione: "Nessuna attività iniziata".
Mancata corrispondenza dei tipi di attività "Metti in pausa/interrompi Nome allenamento", che è un tipo di allenamento diverso dall'attività in corso. Errore visualizzato: "Tipo di attività non corrispondente".
Errore di accesso "Inizia il mio Nome Allenamento", quando l'utente non ha eseguito l'accesso all'app. Riproduci la tecnologia aptica per avvisare l'utente e reindirizzare alla schermata di accesso.
Errore relativo alle autorizzazioni L'utente non dispone dell'autorizzazione per avviare l'attività richiesta. Riproduci la tecnologia aptica per avvisare l'utente e reindirizzare alla schermata di richiesta di autorizzazione.
Problema relativo al sensore L'utente ha disattivato i servizi di geolocalizzazione nelle impostazioni del dispositivo. Riproduci la tecnologia aptica per avvisare gli utenti e mostrare la schermata di errore del sensore. Passaggi successivi facoltativi:
  • Inizia l'attività senza il monitoraggio del sensore e invia una notifica all'utente.
  • Richiedi il riconoscimento dell'utente per avviare un'attività senza il monitoraggio dei sensori.