Google Assistant für Wear OS

Sprachassistenten ermöglichen schnelles und effizientes Arbeiten unterwegs. Sprachinteraktionen auf Wearables sind dynamisch. Das bedeutet, dass der Nutzer möglicherweise mit seinem Handgelenk spricht, ohne auf das Gerät zu schauen, 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, starte meinen Lauf in ExampleApp“ zu ihren Apps weiterleiten.

Einschränkungen

Assistant unter Wear unterstützt das Erfassen von Aktivitäten in Medien und Workouts. Eine Anleitung zur Integration von Medien-Apps in Assistant findest du unter Google Assistant und Medien-Apps. Die folgenden Gesundheits- und Fitness-BIIs werden für Wear OS-Apps unterstützt:

Funktionsweise

App Actions erweitern die App-Funktionen auf Assistant, sodass Nutzer schnell per Sprachbefehl 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 für deine App registrierten App Actions.

App Actions werden in shortcuts.xml mit Android-Funktionselementen beschrieben. Funktionselemente koppeln integrierte Intents (integrierte Intents) (integrierte Intents) (integrierte Intents) (integrierte Intents) (integrierte Intents) (integrierte Intents) einer Anwendung (semantische Beschreibungen) mit Anweisungen zur Ausführung, wie z. B. einer Deeplink-Vorlage. Wenn du deine App über die Google Play Console hochlädst, registriert Google die in shortcuts.xml deklarierten Funktionen und macht sie für Nutzer verfügbar, damit sie von Assistant ausgelöst werden können.

App Actions-Ablauf

Das obige Diagramm zeigt, wie ein Nutzer seine Übung in einer eigenständigen App unterbricht. 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 vom BII unterstützt werden.
  3. In diesem Beispiel ordnet Assistant die Abfrage dem BII PAUSE_EXERCISE zu und extrahiert den Parameter für den Trainingsnamen „Wandern“.
  4. Die App wird über die Definition der Auftragsausführung der shortcuts.xml für diesen BII ausgelöst.
  5. Die App verarbeitet die Ausführung und unterbricht das Training.

Internetverbindung

Die Entwicklung von App Actions hängt von den Funktionen deiner App innerhalb der Android-Geräte ab.

  • Tethering: Wenn eine Wearable-App für alle Funktionen der mobilen App benötigt wird, werden Nutzeranfragen, die über die Smartwatch an Assistant gestellt werden, auf dem Mobilgerät ausgeführt. Damit dieses Szenario ordnungsgemäß funktioniert, muss die App Actions-Ausführungslogik in die mobile App eingebunden sein.

  • Ohne Tethering: Wenn eine Wearable-App zwecks Funktionalität unabhängig von einer mobilen App ist, führt Assistant Anfragen von Nutzern lokal auf der Smartwatch aus. Die App Actions-Funktionen 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. Ordne die In-App-Funktionen, die du per Sprachbefehl aktivieren möchtest, einem entsprechenden BII zu.
  2. Deklariere die Unterstützung für Android-Verknüpfungen in der Ressource AndroidManifest.xml 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 verwenden, um eine Verbindung zu den Inhalten deiner App herzustellen.

  4. Erstellen Sie „shortcuts.xml“, um Details zur Ausführung für Ihre BIIs anzugeben. Du verwendest capability-Verknüpfungselemente, um Assistant die BIIs zu deklarieren, die deine App unterstützt. Weitere Informationen finden Sie unter Funktionen hinzufügen.

  5. Implementiere in shortcuts.xml eine Funktion für den ausgewählten BII. Das folgende Beispiel zeigt eine Funktion für den BII 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. Erweitern Sie gegebenenfalls die Unterstützung für Sprachvariationen von Nutzern mithilfe von Inline-Inventar, 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. Aktualisiere die Logik deiner App für die Verarbeitung der eingehenden App Actions-Auftragsausführung.

    //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 bieten Tools zum Prüfen und Testen deiner App. Weitere Informationen findest du unter Google Assistant-Plug-in für Android Studio. Nachdem du deine App getestet und einen Testrelease erstellt hast, kannst du eine App Actions-Überprüfung anfordern und sie bereitstellen. In den folgenden Best Practices finden Sie Hinweise zum Umgang mit häufigen Fehlern.

Best Practices

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

Zeigen Sie einen entsprechenden oder relevanten Bestätigungsbildschirm zusammen mit haptischer und Audiofeedback an, um auf eine Nutzeranfrage zu antworten – entweder nach erfolgreicher Ausführung einer Anfrage oder um einen Fehler zu melden.

Einfache 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.
  • Glocke und haptisches Feedback abspielen, um den aktuellen Status anzuzeigen
  • Erstellen Sie einen Intent, um ConfirmationActivity aus einer Aktivität zu starten.
  • Text-in-Sprache (TTS) und haptisches Feedback, um Fehler oder Erfolg anzuzeigen.

Häufige Fehler und Lösungen

Verwenden Sie für die folgenden Fehlerfälle die empfohlenen ConfirmationActivity-Mitteilungen der Anwendung.

Fehlerhafter Fall Beispiel für eine Nutzerinteraktion App-Antwort
Aktivität läuft bereits „Starte meinen Übungsnamen
„Setze meinen Übungsnamen fort“
Anzeigefehler: Bereits laufende Aktivität."
Keine Aktivität gestartet „Pausiere/Stopp meinen Übungsnamen Anzeigefehler: „Keine Aktivität gestartet.“
Aktivitätstypen stimmen nicht überein „Pause/Stop my Übungsname“. Dies ist ein anderer Übungstyp als die laufende Aktivität. Anzeigefehler: „Aktivitätstyp stimmt nicht überein.“
Anmeldefehler „Starte meinen Übungsnamen“, wenn der Nutzer nicht in der App angemeldet ist. Spiel-Haptik, um den Nutzer zu warnen und zum Anmeldebildschirm weiterzuleiten.
Berechtigungsfehler Der Nutzer ist nicht berechtigt, die gewünschte Aktivität zu starten. Play-Haptik, um den Nutzer zu warnen und zum Bildschirm für Berechtigungsanfragen weiterzuleiten.
Sensorproblem Der Nutzer hat die Standortdienste in den Geräteeinstellungen deaktiviert. Haptik abspielen, um Nutzer zu warnen und einen Sensorfehlerbildschirm anzuzeigen. Optionale weitere Schritte:
  • Aktivität ohne Sensortracking starten und Nutzer benachrichtigen.
  • Zum Starten der Aktivität ohne Sensor-Tracking eine Bestätigung durch den Nutzer anfordern.