1. Übersicht
Im ersten App Actions-Codelab haben Sie gelernt, wie Sie Google Assistant auf eine Beispiel-Fitness-App ausweiten, indem Sie integrierte Intents (BIIs) aus der BII-Kategorie „Gesundheit und Fitness“ implementieren.
Mit App Actions können Nutzer bestimmte App-Funktionen direkt über Assistant starten, indem sie z. B. „Hey Google, starte einen Lauf in Beispiel-App“ sagen. Assistant kann nicht nur Apps starten, sondern auch ein interaktives Android-Widget für den Nutzer anzeigen, um Anfragen für infrage kommende BIIs zu erfüllen.

Aufgaben
In diesem Codelab erfahren Sie, wie Sie Android-Widgets zurückgeben, um Nutzeranfragen an Assistant zu erfüllen. Außerdem lernen Sie Folgendes:
- BII-Parameter verwenden, um Widgets zu personalisieren
- Stellen Sie in Assistant Sprachausgabe-Einführungen für Ihre Widgets bereit.
- In der Referenz zu integrierten Intents finden Sie Informationen dazu, welche BIIs die Widget-Auftragsausführung unterstützen.
Vorbereitung
Bevor Sie fortfahren, prüfen Sie, ob Ihre Entwicklungsumgebung für die Entwicklung von App Actions bereit ist. Sie sollte Folgendes enthalten:
- Ein Terminal zum Ausführen von Shell-Befehlen, auf dem Git installiert ist.
- Die aktuelle stabile Version von Android Studio.
- Ein physisches oder virtuelles Android-Gerät mit Internetzugang.
- Ein Google-Konto, mit dem Sie in Android Studio, der Google App und der Google Assistant App angemeldet sind.
Wenn Sie ein physisches Gerät verwenden, verbinden Sie es mit Ihrem lokalen Entwicklungscomputer.
2. Funktionsweise
Google Assistant verwendet Natural Language Understanding (NLU), um die Anfrage eines Nutzers zu lesen und sie mit einem integrierten Assistant-Intent (Built-in Intent, BII) abzugleichen. Assistant ordnet die Intention dann der Funktion zu, die das BII implementiert und die Sie für diese Intention in Ihrer App registrieren. Schließlich erfüllt Assistant die Anfrage des Nutzers, indem das Android-Widget angezeigt wird, das Ihre App anhand der Details in der Funktion generiert.
In diesem Codelab definieren Sie eine Funktion, die die Unterstützung für den GET_EXERCISE_OBSERVATION-BII registriert. Bei dieser Funktion weisen Sie Assistant an, einen Android-Intent für die Widget-Klasse FitActions zu generieren, um Anfragen für diesen BII auszuführen. Sie aktualisieren diese Klasse, um ein personalisiertes Widget für Assistant zu generieren, das dem Nutzer angezeigt wird, und eine TTS-Einführung, die von Assistant vorgelesen wird.
Das folgende Diagramm veranschaulicht diesen Ablauf:

FitActions-Widget
Die FitActions-Beispiel-App enthält ein Widget mit Trainingsinformationen, das Nutzer ihrem Startbildschirm hinzufügen können. Dieses Widget eignet sich hervorragend, um Nutzeranfragen zu erfüllen, die den BII GET_EXERCISE_OBSERVATION auslösen.
Funktionsweise des Widgets
Wenn ein Nutzer dem Startbildschirm ein Widget hinzufügt, sendet das Widget ein Signal an den Broadcast Receiver des Geräts. Dieser Dienst ruft Informationen zum Widget aus der Empfängerdefinition des Widgets in der AndroidManifest.xml-Ressource der App ab. Anhand dieser Informationen wird ein RemoteViews-Objekt erstellt, das das Widget darstellt.
In der Beispiel-App wird der Empfänger widgets.StatsWidgetProvider definiert, der der Klasse StatsWidgetProvider entspricht:
<!-- app/src/main/AndroidManifest.xml -->
<receiver
android:name=".widgets.StatsWidgetProvider"
android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/stats_widget" />
</receiver>
Die Klasse StatsWidgetProvider, StatsWidgetProvider.kt, verwaltet die Abläufe zur Erstellung von StatsWidget-Objekten. Dazu gehören folgende Aufgaben:
- Widget-Instanzen erstellen und mit Trainingsdaten aus der App-Datenbank füllen.
- Formatierung von Trainingsdaten für eine bessere Lesbarkeit mit
formatDataAndSetWidget(). - Standardwerte bereitstellen, wenn keine Trainingsdaten verfügbar sind, mit
setNoActivityDataWidget().
Assistant-Unterstützung hinzufügen
In diesem Codelab aktualisieren Sie die Beispiel-App, um die App Actions-Funktionalität zu unterstützen. Diese Änderungen sind geplant:
- Konfigurieren der BII-Funktion
GET_EXERCISE_OBSERVATION, um eine Instanz desStatsWidget-Objekts zurückzugeben. - Aktualisieren Sie die Klasse
StatsWidget, um App Actions-Funktionen wie die folgenden zu verwenden:- Mithilfe von BII-Parametern können Nutzer sich bestimmte Trainingsstatistiken ansehen, indem sie z. B. „Hey Google, zeig mir meine Laufstatistiken in ExampleApp.“ fragen.
- Bereitstellung von TTS-Einführungsstrings
- Sonderfälle verwalten, z. B. wenn die Nutzeranfrage keinen Parameter für den Trainingstyp enthält.
3. Bereiten Sie Ihre Entwicklungsumgebung vor
Basisdateien herunterladen
Führen Sie diesen Befehl aus, um das GitHub-Repository der Beispiel-App zu klonen:
git clone --branch start-widget-codelab https://github.com/actions-on-google/appactions-fitness-kotlin.git
Nachdem Sie das Repository geklont haben, gehen Sie so vor, um es in Android Studio zu öffnen:
- Klicken Sie im Dialogfeld „Willkommen bei Android Studio“ auf Projekt importieren.
- Suchen Sie den Ordner, in den Sie das Repository geklont haben, und wählen Sie ihn aus.
Wenn Sie eine Version der App sehen möchten, die dem abgeschlossenen Codelab entspricht, klonen Sie das Beispiel-App-Repository mit dem Flag --branch master.
Android-App-ID aktualisieren
Durch das Aktualisieren der Anwendungs-ID der App wird die App auf Ihrem Testgerät eindeutig identifiziert. Außerdem wird der Fehler „Doppelter Paketname“ vermieden, wenn die App in die Play Console hochgeladen wird. So aktualisieren Sie die Anwendungs-ID:app/build.gradle
android {
...
defaultConfig {
applicationId "com.MYUNIQUENAME.android.fitactions"
...
}
}
Ersetzen Sie „MYUNIQUENAME“ im Feld applicationId durch einen eindeutigen Namen.
Test-Plug-in installieren
Mit dem Google Assistant-Plug-in können Sie Ihre App Actions auf einem Testgerät testen. Dazu werden Informationen über die Google App auf Ihrem Android-Gerät an Assistant gesendet. Wenn Sie das Plug‑in noch nicht haben, installieren Sie es so:
- Klicken Sie auf Datei > Einstellungen (unter MacOS Android Studio > Einstellungen).
- Rufen Sie im Bereich „Plug‑ins“ den Marketplace auf und suchen Sie nach „Google Assistant“. Sie können das Testtool auch manuell herunterladen und installieren.
- Installieren Sie das Tool und starten Sie Android Studio neu.
App auf Ihrem Gerät testen
Bevor Sie weitere Änderungen an der App vornehmen, sollten Sie sich einen Überblick über die Funktionen der Beispiel-App verschaffen.
Führen Sie die App auf Ihrem Testgerät aus:
- Wählen Sie in Android Studio Ihr physisches oder virtuelles Gerät und dann Run > Run app (Ausführen > App ausführen) aus oder klicken Sie in der Symbolleiste auf Run
. - Halte den Home-Button gedrückt, um Assistant einzurichten und zu prüfen, ob er funktioniert. Sie müssen sich auf Ihrem Gerät in Assistant anmelden, falls Sie das noch nicht getan haben.
Weitere Informationen zu virtuellen Android-Geräten finden Sie unter Virtuelle Geräte erstellen und verwalten.
Sehen Sie sich die App kurz an, um zu sehen, was sie kann. In der ersten Ansicht werden 10 Trainingsaktivitäten vorab ausgefüllt angezeigt.
Vorhandenes Widget ausprobieren
- Tippen Sie auf die Schaltfläche Startbildschirm, um zum Startbildschirm Ihres Testgeräts zu wechseln.
- Halten Sie eine freie Stelle auf dem Startbildschirm gedrückt und wählen Sie Widgets aus.
- Scrolle in der Widget-Liste nach unten zu FitActions.
- Halte das FitActions-Symbol gedrückt und platziere das Widget auf dem Startbildschirm.

4. App Action hinzufügen
In diesem Schritt fügen Sie die BII-Funktion GET_EXERCISE_OBSERVATION hinzu. Dazu fügen Sie in shortcuts.xml ein neues capability-Element hinzu. Diese Funktion gibt an, wie die Funktion ausgelöst wird, wie BII-Parameter verwendet werden und welche Android-Intents aufgerufen werden, um die Anfrage zu erfüllen.
- Fügen Sie der
shortcuts.xml-Ressource des Beispielprojekts ein neuescapability-Element mit dieser Konfiguration hinzu: Ersetzen Sie den Wert<!-- fitnessactions/app/src/main/res/xml/shortcuts.xml --> <capability android:name="actions.intent.GET_EXERCISE_OBSERVATION"> <app-widget android:identifier="GET_EXERCISE_OBSERVATION" android:targetClass="com.devrel.android.fitactions.widgets.StatsWidgetProvider" android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"> <parameter android:name="exerciseObservation.aboutExercise.name" android:key="aboutExerciseName" android:required="true"> </parameter> <extra android:name="hasTts" android:value="true"/> </app-widget> <!-- Add Fallback Intent--> </capability>android:targetPackage,PUT_YOUR_APPLICATION_ID_HERE, durch Ihre eindeutigeapplicationId.
Diese Funktion ordnet den BII GET_EXERCISE_OBSERVATION dem Intent app-widget zu. Wenn der BII ausgelöst wird, wird das Widget instanziiert und dem Nutzer angezeigt.
Bevor das Widget ausgelöst wird, extrahiert Assistant unterstützte BII-Parameter aus der Nutzeranfrage. Für dieses Codelab ist der BII-Parameter exerciseObservation.aboutExercise.name erforderlich, der den vom Nutzer angeforderten Trainingstyp darstellt. Die App unterstützt drei Trainingsarten: „Laufen“, „Gehen“ und „Radfahren“. Sie stellen ein Inline-Inventar bereit, um Assistant über diese unterstützten Werte zu informieren.
- Definieren Sie diese Inventarelemente, indem Sie diese Konfiguration über der
GET_EXERCISE_OBSERVATION-Funktion zushortcuts.xmlhinzufügen:<!-- shortcuts.xml --> <!-- shortcuts are bound to the GET_EXERCISE_OBSERVATION capability and represent the types of exercises supported by the app. --> <shortcut android:shortcutId="running" android:shortcutShortLabel="@string/activity_running"> <capability-binding android:key="actions.intent.GET_EXERCISE_OBSERVATION"> <parameter-binding android:key="exerciseObservation.aboutExercise.name" android:value="@array/runningSynonyms"/> </capability-binding> </shortcut> <shortcut android:shortcutId="walking" android:shortcutShortLabel="@string/activity_walking"> <capability-binding android:key="actions.intent.GET_EXERCISE_OBSERVATION"> <parameter-binding android:key="exerciseObservation.aboutExercise.name" android:value="@array/walkingSynonyms"/> </capability-binding> </shortcut> <shortcut android:shortcutId="cycling" android:shortcutShortLabel="@string/activity_cycling"> <capability-binding android:key="actions.intent.GET_EXERCISE_OBSERVATION"> <parameter-binding android:key="exerciseObservation.aboutExercise.name" android:value="@array/cyclingSynonyms"/> </capability-binding> </shortcut> <capability android:name="actions.intent.GET_EXERCISE_OBSERVATION"> <!-- ... --> </capability>
Fallback-Intent hinzufügen
Fallback-Intents werden in Situationen verwendet, in denen eine Nutzeranfrage nicht erfüllt werden kann, weil in der Anfrage Parameter fehlen, die für die Funktion erforderlich sind. Für die Funktion GET_EXERCISE_OBSERVATION ist der Parameter exerciseObservation.aboutExercise.name erforderlich, der durch das Attribut android:required="true" angegeben wird. In diesen Fällen müssen Sie einen Fallback-Intent für Assistant definieren, damit die Anfrage erfolgreich ausgeführt werden kann, auch wenn in der Anfrage keine Parameter angegeben sind.
- Fügen Sie in
shortcuts.xmlder FunktionGET_EXERCISE_OBSERVATIONmit dieser Konfiguration einen Fallback-Intent hinzu:<!-- shortcuts.xml --> <capability android:name="actions.intent.GET_EXERCISE_OBSERVATION"> <app-widget> <!-- ... --> </app-widget> <!-- Fallback intent with no parameters needed to successfully execute.--> <intent android:identifier="GET_EXERCISE_OBSERVATION_FALLBACK" android:action="android.intent.action.VIEW" android:targetClass="com.devrel.android.fitactions.widgets.StatsWidgetProvider"> </intent> </capability>
In dieser Beispielkonfiguration ist die Fallback-Ausführung ein Android-Intent ohne Parameter in den Extra-Daten.
5. Widget für Assistant aktivieren
Nachdem die Funktion GET_EXERCISE_OBSERVATION eingerichtet wurde, aktualisieren Sie die Widget-Klasse, um die Sprachaufrufe von App Actions zu unterstützen.
Widgets Extension-Bibliothek hinzufügen
Die Widgets Extension-Bibliothek für App Actions verbessert Ihre Widgets für die sprachgesteuerte Nutzung von Assistant. Insbesondere können Sie eine benutzerdefinierte TTS-Einführung für Ihre Widgets bereitstellen.
- Fügen Sie der
/app/build.gradle-Ressource der Beispiel-App die Abhängigkeit der Widgets Extension-Bibliothek hinzu: Klicken Sie im Warnfeld, das in Android Studio angezeigt wird, auf Jetzt synchronisieren. Wenn Sie nach jeder// app/build.gradle dependencies { //... implementation "com.google.assistant.appactions:widgets:0.0.1" }build.gradle-Änderung synchronisieren, können Sie Fehler beim Erstellen der App vermeiden.
Widget-Dienst hinzufügen
Ein Dienst ist eine Anwendungskomponente, die lang andauernde Vorgänge im Hintergrund ausführen kann. Ihre App muss einen Dienst zur Verarbeitung von Widget-Anfragen bereitstellen.
- Fügen Sie der
AndroidManifest.xml-Ressource der Beispiel-App einen Dienst mit dieser Konfiguration hinzu:<!-- AndroidManifest.xml --> <service android:name=".widgets.StatsWidgetProvider" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" /> </intent-filter> </service>
Bei einer Sprachanfrage, die die Widget-Ausführung auslöst, verwendet Assistant diesen Dienst, um Anfragen an die App zu senden. Der Dienst empfängt die Anfrage zusammen mit den BII-Daten. Der Dienst verwendet diese Daten, um ein RemoteView-Widget-Objekt zu generieren, das in Assistant gerendert werden soll.
Widget-Klasse aktualisieren
Ihre App ist jetzt so konfiguriert, dass GET_EXERCISE_OBSERVATION-Funktionsanfragen an Ihre Widget-Klasse weitergeleitet werden. Aktualisieren Sie als Nächstes die Klasse StatsWidget.kt, um mithilfe von BII-Parameterwerten eine Widget-Instanz zu generieren, die auf die Nutzeranfrage zugeschnitten ist.
- Öffnen Sie die Klasse
StatsWidget.ktund importieren Sie die App Actions Widget Extension-Bibliothek:// StatsWidget.kt // ... Other import statements import com.google.assistant.appactions.widgets.AppActionsWidgetExtension - Fügen Sie diese privaten Variablen hinzu, mit denen Sie die Informationen bestimmen, die im Widget angezeigt werden sollen:
// StatsWidget.kt private val hasBii: Boolean private val isFallbackIntent: Boolean private val aboutExerciseName: String private val exerciseType: FitActivity.Type - Fügen Sie die
init-Funktion hinzu, damit die Klasse die vom Assistenten übergebenen Widget-Optionsdaten verwenden kann:// StatsWidget.kt init { val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId) val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) hasBii = !bii.isNullOrBlank() val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS) if (params != null) { isFallbackIntent = params.isEmpty if (isFallbackIntent) { aboutExerciseName = context.resources.getString(R.string.activity_unknown) } else { aboutExerciseName = params.get("aboutExerciseName") as String } } else { isFallbackIntent = false aboutExerciseName = context.resources.getString(R.string.activity_unknown) } exerciseType = FitActivity.Type.find(aboutExerciseName) }
Sehen wir uns an, wie diese Updates es der Klasse StatsWidget.kt ermöglichen, auf Android-Intents zu reagieren, die von der Funktion GET_EXERCISE_OBSERVATION generiert werden:
optionsBundle= Bundle- Bundles sind Objekte, die prozessübergreifend, zwischen Aktivitäten mit Intents und zum Speichern von temporärem Status bei Konfigurationsänderungen verwendet werden sollen. Assistant verwendet
Bundle-Objekte, um Konfigurationsdaten an das Widget zu übergeben.
- Bundles sind Objekte, die prozessübergreifend, zwischen Aktivitäten mit Intents und zum Speichern von temporärem Status bei Konfigurationsänderungen verwendet werden sollen. Assistant verwendet
bii=actions.intent.GET_EXERCISE_OBSERVATION- Der Name des BII ist über das Bundle mit
AppActionsWidgetExtensionverfügbar.
- Der Name des BII ist über das Bundle mit
hasBii=true- Prüft, ob ein BII vorhanden ist.
params=Bundle[{aboutExerciseName=running}]- Ein spezielles Bundle, das von App Actions generiert wird, ist in den Widget-Optionen
Bundleverschachtelt. Sie enthält die Schlüssel/Wert-Paare der BII. In diesem Fall wurde der Wertrunningaus der Beispielanfrage „Hey Google, zeig mir meine Laufstatistiken in ExampleApp.“ extrahiert.
- Ein spezielles Bundle, das von App Actions generiert wird, ist in den Widget-Optionen
isFallbackIntent=false- Prüft, ob die erforderlichen BII-Parameter im Intent
Extrasvorhanden sind.
- Prüft, ob die erforderlichen BII-Parameter im Intent
aboutExerciseName=running- Ruft den Intent-Wert
ExtrasfüraboutExerciseNameab.
- Ruft den Intent-Wert
exerciseType=RUNNING- Verwendet
aboutExerciseName, um das entsprechende Datenbanktypobjekt zu suchen.
- Verwendet
Da die Klasse StatsWidget jetzt eingehende Android-Intent-Daten für App Actions verarbeiten kann, müssen Sie die Logik für die Widget-Erstellung aktualisieren, um zu prüfen, ob das Widget durch eine App Action ausgelöst wurde.
- Ersetzen Sie in
StatsWidget.ktdie FunktionupdateAppWidget()durch diesen Code:// StatsWidget.kt fun updateAppWidget() { /** * Checks for App Actions BII invocation and if BII parameter data is present. * If parameter data is missing, use data from last exercise recorded to the * fitness tracking database. */ if (hasBii && !isFallbackIntent) { observeAndUpdateRequestedExercise() } else observeAndUpdateLastExercise() }
Im vorherigen Code wird auf eine neue Funktion verwiesen: observeAndUpdateRequestedExercise. Mit dieser Funktion werden Widget-Daten anhand der exerciseType-Parameterdaten generiert, die vom Android-Intent für App Actions übergeben werden.
- Fügen Sie die Funktion
observeAndUpdateRequestedExercisemit diesem Code hinzu:// StatsWidget.kt /** * Create and observe the last exerciseType activity LiveData. */ private fun observeAndUpdateRequestedExercise() { val activityData = repository.getLastActivities(1, exerciseType) activityData.observeOnce { activitiesStat -> if (activitiesStat.isNotEmpty()) { formatDataAndSetWidget(activitiesStat[0]) updateWidget() } else { setNoActivityDataWidget() updateWidget() } } }
Im vorherigen Code wird eine vorhandene Repository-Klasse verwendet, die in der App enthalten ist, um Fitnessdaten aus der lokalen Datenbank der App abzurufen. Diese Klasse bietet eine API, die den Zugriff auf die Datenbank vereinfacht. Das Repository stellt ein LiveData-Objekt bereit, wenn Abfragen für die Datenbank ausgeführt werden. In Ihrem Code sehen Sie LiveData, um die letzte Fitnessaktivität abzurufen.
TTS aktivieren
Sie können einen TTS-String angeben, den Assistant beim Anzeigen Ihres Widgets vorlesen soll. Wir empfehlen, diese Funktion zu nutzen, um Ihren Widgets einen hörbaren Kontext zu geben. Diese Funktion wird von der App Actions Widgets Extension-Bibliothek bereitgestellt. Damit können Sie den Text und die TTS-Einführungen festlegen, die Ihre Widgets in Assistant begleiten.
Die TTS-Einführung kann gut in der Funktion formatDataAndSetWidget platziert werden, die die aus der App-Datenbank zurückgegebenen Aktivitätsdaten formatiert.
- Fügen Sie in
StatsWidget.ktdiesen Code in die FunktionformatDataAndSetWidgetein:// StatsWidget.kt private fun formatDataAndSetWidget( activityStat: FitActivity, ) { // ... // Add conditional for hasBii for widget with data if (hasBii) { // Formats TTS speech and display text for Assistant val speechText = context.getString( R.string.widget_activity_speech, activityExerciseTypeFormatted, formattedDate, durationInMin, distanceInKm ) val displayText = context.getString( R.string.widget_activity_text, activityExerciseTypeFormatted, formattedDate ) setTts(speechText, displayText) } }
Im vorherigen Code wird auf zwei String-Ressourcen verwiesen: eine für Sprache und eine für Text. Im Video zu Widgets finden Sie im Abschnitt Empfehlungen für den Stil der Sprachausgabe Empfehlungen zur Sprachausgabe. Im Beispiel wird auch auf setTts verwiesen, eine neue Funktion, die der Widget-Instanz die TTS-Informationen bereitstellt.
- Fügen Sie die neue Funktion
setTtsmit diesem Code inStatsWidget.ktein:// StatsWidget.kt /** * Sets TTS to widget */ private fun setTts( speechText: String, displayText: String, ) { val appActionsWidgetExtension: AppActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech(speechText) // TTS to be played back to the user .setResponseText(displayText) // Response text to be displayed in Assistant .build() // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId) }
Vervollständige schließlich die TTS-Logik, indem du TTS-Informationen festlegst, wenn die Trainingsdatenbank leere Daten für einen angeforderten Trainingstyp zurückgibt.
- Aktualisieren Sie die Funktion
setNoActivityDataWidget()inStatsWidget.ktmit diesem Code:// StatsWidget.kt private fun setNoActivityDataWidget() { // ... // Add conditional for hasBii for widget without data if (hasBii) { // formats speech and display text for Assistant // https://developers.google.com/assistant/app/widgets#library val speechText = context.getString(R.string.widget_no_activity_speech, aboutExerciseName) val displayText = context.getString(R.string.widget_no_activity_text) setTts(speechText, displayText) } }
6. App Action testen
Verwenden Sie während der Entwicklung das Google Assistant-Plug‑in, um sich eine Vorschau von Assistant App Actions auf einem Testgerät anzusehen. Mit dem Tool können Sie Intent-Parameter für eine App Action anpassen, um zu testen, wie Ihre Action auf die verschiedenen Arten reagiert, mit denen Nutzer Assistant bitten, sie auszuführen.
Vorschau erstellen
So testen Sie Ihre App Action mit dem Plug-in:
- Klicken Sie auf Tools > Google Assistant > App Actions Test Tool. Möglicherweise werden Sie aufgefordert, sich mit Ihrem Google-Konto in Android Studio anzumelden.
- Klicken Sie auf Vorschau erstellen. Lesen und akzeptieren Sie die Richtlinien und Nutzungsbedingungen für App Actions, wenn Sie dazu aufgefordert werden.
Erwarteten Trainingstyp testen
So geben Sie ein Widget zurück, das Informationen zum letzten Lauf enthält, der in der App abgeschlossen wurde:
- Wählen Sie im ersten Schritt, in dem Sie aufgefordert werden, ein BII auszuwählen und zu konfigurieren,
actions.intent.GET_EXERCISE_OBSERVATIONaus. - Aktualisieren Sie im Feld exerciseObservation den Standardnamen der Übung von
climbingzurun. - Klicken Sie auf App-Aktion ausführen.

Unerwarteten Trainingstyp testen
So testen Sie einen unerwarteten Trainingstyp im Testtool:
- Aktualisieren Sie im Feld exerciseObservation den Wert von
namevonRunaufClimbing. - Klicken Sie auf App-Aktion ausführen.
Assistant sollte ein Widget mit der Meldung „Keine Aktivität gefunden“ zurückgeben.

Fallback-Intent testen
Bei Anfragen, die den Fallback-Intent auslösen, sollte ein Widget zurückgegeben werden, in dem Informationen zur letzten protokollierten Aktivität eines beliebigen Trainingstyps angezeigt werden.
So testen Sie den Fallback-Intent:
- Löschen Sie im Feld exerciseObservation das
aboutExercise-Objekt. - Klicken Sie auf App-Aktion ausführen.
Assistant sollte ein Widget mit Informationen zum letzten abgeschlossenen Training zurückgeben.

7. Nächste Schritte
Glückwunsch!
Sie können jetzt Nutzeranfragen über ein Android-Widget mit Assistant beantworten.
Behandelte Themen
In diesem Codelab haben Sie Folgendes gelernt:
- App-Widget zu einem BII hinzufügen
- Widget ändern, um auf Parameter aus Android Extras zuzugreifen
Nächste Schritte
Von hier aus können Sie weitere Optimierungen an Ihrer Fitness-App vornehmen. Das fertige Projekt finden Sie im Haupt-Repository auf GitHub.
Hier sind einige Vorschläge, wie Sie diese App mit App Actions erweitern können:
- In der Referenz für integrierte Intents für App Actions finden Sie weitere Möglichkeiten, Ihre Apps für Assistant zu erweitern.
Wenn Sie Ihre Reise mit Actions on Google fortsetzen möchten, sehen Sie sich diese Ressourcen an:
- developers.google.com/assistant/app: Offizielle Dokumentationswebsite für Google Assistant App Actions.
- Beispielindex für App Actions: Beispiel-Apps und Code zum Erkunden der App Actions-Funktionen.
- Actions on Google-GitHub-Repository: Beispielcode und Bibliotheken.
- r/GoogleAssistantDev: Offizielle Reddit-Community für Entwickler, die mit Google Assistant arbeiten.
Folgen Sie uns auf Twitter unter @ActionsOnGoogle, um über unsere neuesten Ankündigungen auf dem Laufenden zu bleiben, und twittern Sie unter #appactions, um zu teilen, was Sie entwickelt haben.
Feedbackumfrage
Füllen Sie diese Umfrage aus, um Feedback zu diesem Codelab zu geben.