Google Assistant für Wear OS

Smartwatch-Sprachassistenten ermöglichen schnelle und effiziente Unterwegs-Szenarien. Sprachinteraktionen auf Wearables sind dynamisch. Das bedeutet, dass der Nutzer möglicherweise mit seinem Handgelenk spricht, ohne auf das Gerät zu sehen, während er auf eine Antwort wartet.

Mit Assistant App Actions können Android-Entwickler Wear OS-Apps auf Google Assistant erweitern und Nutzer mit Sprachbefehlen wie „Hey Google, start my run on ExampleApp“ schnell zu ihren Apps weiterleiten.

Einschränkungen

Assistant auf Wear OS unterstützt Interaktionen mit Medien- und Trainingsaufzeichnung. Eine Anleitung zur Einbindung von Medien-Apps in Assistant finden Sie unter Google Assistant und Medien-Apps. Die folgenden BIIs für Gesundheit und Fitness werden für Wear OS-Apps unterstützt:

So funktionierts

Mit App Actions werden die App-Funktionen auf Assistant erweitert, sodass Nutzer per Sprachbefehl schnell auf App-Funktionen zugreifen können. Wenn ein Nutzer Assistant angibt, dass er deine App verwenden möchte, sucht Assistant in der shortcuts.xml-Ressource der App nach App-Aktionen, die für deine App registriert sind.

App-Aktionen werden unter shortcuts.xml mit Android-Funktionselementen beschrieben. Funktionselemente kombinieren integrierte Intents (BII) – semantische Beschreibungen einer App-Funktion – mit Ausführungsanweisungen wie einer Deeplink-Vorlage. Wenn du deine App über die Google Play Console hochlädst, registriert Google die in shortcuts.xml deklarierten Funktionen, sodass Nutzer sie über Assistant auslösen können.

Ablauf „App-Aktionen“

Das obige Diagramm zeigt einen Nutzer, der sein Training in einer eigenständigen App pausiert. Die folgenden Schritte werden ausgeführt:

  1. Der Nutzer sendet eine Sprachnachricht an Assistant für die jeweilige Wearable-App.
  2. Assistant gleicht die Anfrage mit einem vortrainierten Modell (BII) ab und extrahiert alle in der Abfrage gefundenen Parameter, die von BII unterstützt werden.
  3. Im Beispiel ordnet Assistant die Abfrage dem PAUSE_EXERCISE-BII zu und extrahiert den Trainingsnamenparameter „hike“.
  4. Die Anwendung wird über ihre shortcuts.xml-Funktionserfüllungsdefinition für diese BII ausgelöst.
  5. Die App verarbeitet die Auftragsausführung und pausiert das Training.

Konnektivität

Die Entwicklung von App Actions hängt von der Funktionalität Ihrer App innerhalb der Android-Geräteumgebung ab.

  • Tethering: Wenn eine Wearable-App für volle Funktionalität von der mobilen App abhängig ist, werden Nutzeranfragen, die über die Smartwatch an Assistant gestellt werden, auf dem Mobilgerät ausgeführt. Damit dieses Szenario ordnungsgemäß funktioniert, muss die Auftragsausführungslogik für App Actions in die mobile App integriert sein.

  • Kein Tethering: Wenn die Funktionalität einer Wearable-App von einer mobilen App unabhängig ist, führt Assistant Nutzeranfragen lokal auf der Smartwatch aus. App-Aktionen müssen in die Wearable-App integriert sein, damit diese Anfragen ordnungsgemäß ausgeführt werden können.

Sprachfunktionen zu Wear hinzufügen

So binden Sie App Actions in Ihre Wear OS-App ein:

  1. Ordnen Sie die In-App-Funktionalität, die Sie per Sprachbefehl aktivieren möchten, einer entsprechenden BII zu.
  2. Deklarieren Sie die Unterstützung für Android-Verknüpfungen in der AndroidManifest.xml-Ressource der Hauptaktivität.

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. Ein <intent-filter>-Element zu AndroidManifest.xml hinzufügen. Dadurch kann Assistant Deeplinks zu den Inhalten Ihrer App verwenden.

  4. Erstellen Sie shortcuts.xml, um Details zur Auftragsausführung für Ihre BIIs anzugeben. Mit capability-Verknüpfungselementen deklarieren Sie Assistant die BIIs, die Ihre App unterstützt. Weitere Informationen finden Sie unter Funktionen hinzufügen.

  5. Implementieren Sie in shortcuts.xml eine Funktion für die ausgewählte BII. Im folgenden Beispiel wird eine Funktion für die START_EXERCISE-BII veranschaulicht:

    <?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. Erweitern Sie gegebenenfalls die Unterstützung für Sprachvariationen der Nutzer mithilfe eines Inline-Inventars, das Funktionen und Inhalte in Ihrer App darstellt.

    <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. Aktualisieren Sie die App-Logik, um die eingehende Auftragsausführung für App-Aktionen zu verarbeiten.

    //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)
    }
    

App als Vorschau ansehen, testen und veröffentlichen

App Actions bietet Tools zum Prüfen und Testen Ihrer App. Weitere Informationen finden Sie unter Google Assistant-Plug-in für Android Studio. Nachdem Sie Ihre App getestet und einen Testrelease erstellt haben, können Sie eine Überprüfung von App-Aktionen anfordern und bereitstellen. In den folgenden Best Practices finden Sie Hinweise zum Umgang mit häufigen Fehlern.

Best Practices

Halte dich an diese empfohlenen Best Practices, um bei der Einbindung deiner App in Assistant für eine positive Nutzererfahrung zu sorgen.

Blende einen entsprechenden oder relevanten Bestätigungsbildschirm mit Haptik und Audiofeedback ein, um auf eine Nutzeranfrage zu antworten – entweder wenn eine Anfrage erfolgreich ausgeführt wurde oder um einen Fehler zu melden.

Grundlegende Qualität Bessere Qualität Beste Qualität
  • Erstellen Sie einen Intent, um ConfirmationActivity aus einer Aktivität zu starten.
  • Erstellen Sie einen Intent, um ConfirmationActivity aus einer Aktivität zu starten.
  • Einen Glockenton UND haptisches Feedback abspielen, um den aktuellen Status anzuzeigen.
  • Erstellen Sie einen Intent, um ConfirmationActivity aus einer Aktivität zu starten.
  • Text-in-Sprache und haptisches Feedback, um Fehler oder Erfolg anzuzeigen.

Häufige Fehler und Lösungen

Verwenden Sie in den folgenden Fehlerfällen die folgende empfohlene ConfirmationActivity-Meldung.

Groß-/Kleinschreibung Fehler Beispiel für eine Nutzerinteraktion App-Antwort
Aktivität läuft bereits „Starte meinen Trainingsnamen
„Setz meinen Trainingsnamen fort“
Anzeigefehler: Aktivität ist bereits aktiv.“
Keine Aktivität gestartet „Pausiere/beende meinen Trainingsnamen Anzeigefehler: „Keine Aktivität gestartet.“
Abweichende Aktivitätstypen „Pause/Stopp meinen Trainingsnamen“, eine andere Trainingsart als die laufende Aktivität. Anzeigefehler: „Aktivitätstyp stimmt nicht überein.“
Anmeldefehler „Start my TrainingName“, wenn der Nutzer nicht bei der App angemeldet ist. Benachrichtigung des Nutzers und Weiterleitung zum Anmeldebildschirm
Berechtigungsfehler Der Nutzer ist nicht berechtigt, die angeforderte Aktivität zu starten. Benachrichtigen Sie den Nutzer durch haptische Benachrichtigungen und leiten Sie ihn zum Bildschirm für die Berechtigungsanfrage weiter.
Sensorproblem Der Nutzer hat die Ortungsdienste in den Geräteeinstellungen deaktiviert. Benachrichtigen Sie Nutzer und zeigen Sie den Sensorfehlerbildschirm an. Optionale nächste Schritte:
  • Aktivität ohne Sensor-Tracking starten und Nutzer benachrichtigen.
  • Bitte den Nutzer um Bestätigung, eine Aktivität ohne Sensor-Tracking zu starten.