1. סקירה כללית
ב-first App Actions Codelab, למדתם איך להרחיב את Google Assistant לאפליקציית כושר לדוגמה על ידי הטמעת Intents מובנים (BII) מקטגוריית Health and Fitness BII.
'פעולות באפליקציה' מאפשרות למשתמשים להפעיל ישירות תכונות ספציפיות של האפליקציה מ-Assistant. למשל, אפשר לשאול: "Ok Google, start a run on ExampleApp". בנוסף להשקת האפליקציות, Assistant יכולה להציג למשתמש ווידג'ט אינטראקטיבי של Android כדי למלא בקשות של ממשקי BII שעומדים בדרישות.
מה תפַתחו
ב-Codelab הזה תלמדו איך להחזיר ווידג'טים של Android כדי למלא בקשות של משתמשים מ-Assistant. תלמדו גם:
- פרמטרים של BII של משתמש להתאמה אישית של ווידג'טים.
- הוספת רכיבי מבוא של המרת טקסט לדיבור (TTS) ב-Assistant לווידג'טים.
- ניתן להשתמש בחומר העזר בנושא Intent מובנה כדי לקבוע אילו ממשקי BII תומכים במימוש ווידג'ט.
דרישות מוקדמות
לפני שממשיכים, צריך לוודא שסביבת הפיתוח מוכנה לפיתוח של 'פעולות באפליקציה'. היא צריכה לכלול:
- טרמינל להרצת פקודות מעטפת עם git מותקן.
- הגרסה היציבה האחרונה של Android Studio.
- מכשיר Android פיזי או וירטואלי עם גישה לאינטרנט.
- חשבון Google שמחובר ל-Android Studio, לאפליקציית Google ולאפליקציית Google Assistant.
אם אתם משתמשים במכשיר פיזי, צריך לחבר אותו למכונת הפיתוח המקומית.
2. איך זה עובד
Google Assistant משתמשת בהבנת שפה טבעית (NLU) כדי לקרוא בקשות של משתמשים ולהתאים אותה ל-Intent מובנה של Assistant (BII). לאחר מכן, Assistant ממפה את הכוונה ליכולת (שמטמיעה את ה-BII), שרושמים להכוונה הזו באפליקציה. לבסוף, Assistant ממלאת את הבקשה של המשתמש על ידי הצגת הווידג'ט ל-Android שהאפליקציה יוצרת באמצעות הפרטים שביכולת.
ב-Codelab הזה מגדירים יכולת שרושמת תמיכה ב-BII של GET_EXERCISE_OBSERVATION
. באפשרות הזו, אתם מבקשים מ-Assistant ליצור Intent של Android למחלקת הווידג'טים FitActions
כדי למלא בקשות ל-BII הזה. מעדכנים את הכיתה הזו כדי ליצור ווידג'ט מותאם אישית ש-Assistant תציג למשתמש, וקדמה ל-TTS שעליה Assistant תוכל להכריז.
התרשים הבא מדגים את התהליך הזה:
הווידג'ט של FitActions
האפליקציה לדוגמה של FitActions מכילה ווידג'ט של מידע על אימון הכושר שמשתמשים יכולים להוסיף למסך הבית. הווידג'ט הזה הוא מועמד מעולה למילוי שאילתות של משתמשים שמפעילות את ה-BII של GET_EXERCISE_OBSERVATION
.
איך הווידג'ט פועל
כאשר משתמש מוסיף ווידג'ט למסך הבית, הווידג'ט שולח פינג למכשיר מקלט שידור. השירות הזה מאחזר מידע על הווידג'ט מהגדרת המקלט של הווידג'ט במשאב AndroidManifest.xml
של האפליקציה. היא משתמשת במידע הזה כדי ליצור אובייקט RemoteViews
שמייצג את הווידג'ט.
האפליקציה לדוגמה מגדירה את המקבל widgets.StatsWidgetProvider
, שתואם למחלקה StatsWidgetProvider
:
<!-- 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>
המחלקה StatsWidgetProvider
, StatsWidgetProvider.kt
, מנהלת את תהליכי יצירת האובייקט StatsWidget
. הוא מטפל בתחומי האחריות האלה:
- יצירת מופעים של ווידג'טים ואכלוס אותם בנתוני תרגילים ממסד הנתונים של האפליקציות.
- הפירמוט של נתוני אימוני הכושר הקריא, עם
formatDataAndSetWidget()
. - מתן ערכי ברירת מחדל אם נתוני אימוני הכושר לא זמינים, באמצעות
setNoActivityDataWidget()
.
הוספת תמיכה של Assistant
ב-Codelab הזה, מעדכנים את האפליקציה לדוגמה כדי לטפל בפונקציונליות של 'פעולות באפליקציה'. השינויים האלה כוללים:
- הגדרת יכולת ה-BII של
GET_EXERCISE_OBSERVATION
להחזרת מופע של האובייקטStatsWidget
. - המערכת מעדכנים את הכיתה
StatsWidget
כדי להשתמש בתכונות של 'פעולות באפליקציה', כמו:- שימוש בפרמטרים של BII, כדי לאפשר למשתמשים לצפות בנתונים סטטיסטיים ספציפיים של אימוני כושר באמצעות שאלות כמו: "Ok Google, show my run center on ExampleApp".
- אספקת מחרוזות מבוא ל-TTS.
- ניהול מקרים מיוחדים, למשל כששאילתת המשתמש לא כוללת פרמטר של סוג אימון.
3. הכנת סביבת הפיתוח
הורדת הקבצים הבסיסיים
מריצים את הפקודה הבאה כדי לשכפל את מאגר GitHub של האפליקציה לדוגמה:
git clone --branch start-widget-codelab https://github.com/actions-on-google/appactions-fitness-kotlin.git
אחרי שמשכפלים את המאגר, פועלים לפי השלבים הבאים כדי לפתוח אותו ב-Android Studio:
- בתיבת הדו-שיח 'ברוך בואך אל Android Studio' לוחצים על ייבוא פרויקט.
- מוצאים את התיקייה שבה שכפולם את המאגר ובוחרים בה.
כדי לראות גרסה של האפליקציה שמייצגת את ה-Codelab שהושלמה, צריך לשכפל את מאגר האפליקציה לדוגמה באמצעות הדגל --branch master
.
עדכון המזהה של האפליקציה ל-Android
עדכון מזהה האפליקציה של האפליקציה משמש לזיהוי ייחודי של האפליקציה במכשיר הבדיקה ולמניעת 'שם חבילה כפול'. שגיאה אם האפליקציה הועלתה ל-Play Console. כדי לעדכן את מזהה האפליקציה, פותחים את app/build.gradle
:
android {
...
defaultConfig {
applicationId "com.MYUNIQUENAME.android.fitactions"
...
}
}
מחליפים את "MYUNIQUENAME" בשדה applicationId
למשהו ייחודי לך.
התקנת הפלאגין לבדיקה
הפלאגין של Google Assistant מאפשר לבדוק את הפעולות באפליקציה במכשיר בדיקה. לשם כך, המידע נשלח ל-Assistant באמצעות אפליקציית Google במכשיר Android. אם הפלאגין עדיין לא מותקן, מתקינים אותו לפי השלבים הבאים:
- עוברים אל קובץ > הגדרות (Android Studio > העדפות ב-MacOS).
- בקטע 'יישומי פלאגין', עוברים אל Marketplace ומחפשים את 'Google Assistant'. אתם יכולים גם להוריד ולהתקין את כלי הבדיקה באופן ידני.
- מתקינים את הכלי ומפעילים מחדש את Android Studio.
בדיקת האפליקציה במכשיר
לפני שמבצעים שינויים נוספים באפליקציה, כדאי להבין מה אפשר לעשות באמצעות האפליקציה לדוגמה.
מריצים את האפליקציה במכשיר הבדיקה:
- ב-Android Studio, בוחרים את המכשיר הפיזי או הווירטואלי ובוחרים באפשרות הפעלה > אפשר להפעיל את האפליקציה או ללחוץ על הפעלה בסרגל הכלים.
- כדי להגדיר את Assistant ולוודא שהיא פועלת, לוחצים לחיצה ארוכה על הלחצן הראשי. אם עדיין לא עשית זאת, יהיה עליך להיכנס אל Assistant במכשיר שלך.
מידע נוסף על מכשירים וירטואליים של Android זמין במאמר יצירה וניהול של מכשירים וירטואליים.
בדקו בקצרה את האפליקציה כדי לראות מה היא יכולה לעשות. האפליקציה מאכלסת מראש 10 פעילויות של תרגול ומציגה את המידע הזה בתצוגה הראשונה.
רוצה לנסות את הווידג'ט הקיים?
- מקישים על לחצן דף הבית כדי לעבור למסך הבית של מכשיר הבדיקה.
- לוחצים לחיצה ארוכה על אזור ריק במסך הבית ובוחרים באפשרות ווידג'טים.
- גוללים למטה ברשימת הווידג'טים אל FitActions.
- ללחוץ לחיצה ארוכה על הסמל של FitActions ולהציב את הווידג'ט שלו במסך הבית.
4. הוספת הפעולה באפליקציה
בשלב הזה, מוסיפים את יכולת ה-BII של GET_EXERCISE_OBSERVATION
. כדי לעשות זאת, צריך להוסיף רכיב capability
חדש ב-shortcuts.xml
. היכולת הזו מציינת איך היכולת מופעלת, אופן השימוש בפרמטרים של BII ואילו כוונות של Android מופעלות כדי למלא את הבקשה.
- מוסיפים רכיב
capability
חדש למשאבshortcuts.xml
של הפרויקט לדוגמה, עם ההגדרות האישיות הבאות:
מחליפים את הערך<!-- 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>
PUT_YOUR_APPLICATION_ID_HERE
ב-android:targetPackage
ב-applicationId
הייחודי שלכם.
היכולת הזו ממפה את ה-BII של GET_EXERCISE_OBSERVATION
ל-Intent של app-widget
, כך שכאשר ה-BII מופעל, הווידג'ט יוצר ומוצג למשתמש.
לפני הפעלת הווידג'ט, Assistant מחלצת פרמטרים נתמכים של BII משאילתת המשתמש. ה-Codelab הזה מחייב את פרמטר ה-BII exerciseObservation.aboutExercise.name
, שמייצג את סוג התרגיל שהמשתמש ביקש. האפליקציה תומכת בשלושה סוגי פעילות גופנית: 'ריצה', 'הליכה' ו'רכיבה על אופניים'. צריך לספק מלאי שטחי פרסום מוטבע כדי ליידע את Assistant לגבי הערכים הנתמכים האלה.
- כדי להגדיר את רכיבי המלאי האלה, צריך להוסיף את ההגדרה הזו, מעל היכולת
GET_EXERCISE_OBSERVATION
, אלshortcuts.xml
:<!-- 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>
הוספת Intent חלופי
אובייקטים מסוג Intent חלופיים מטפלים במצבים שבהם אי אפשר למלא שאילתת משתמש כי חסרים בה פרמטרים שנדרשים על ידי היכולת. היכולת GET_EXERCISE_OBSERVATION
מחייבת את הפרמטר exerciseObservation.aboutExercise.name
, שצוין באמצעות המאפיין android:required="true"
. במצבים כאלה, Assistant דורשת להגדיר Intent חלופי כדי לאפשר לבקשה להצליח, גם אם לא סופקו פרמטרים בשאילתה.
- ב-
shortcuts.xml
, מוסיפים Intent חלופי ליכולת שלGET_EXERCISE_OBSERVATION
באמצעות ההגדרות האישיות האלה:<!-- 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>
בהגדרה לדוגמה הזו, מילוי ההזמנות החלופי הוא Intent של Android ללא פרמטרים בנתוני Extra
שלו.
5. הפעלת הווידג'ט ל-Assistant
אם נוצרה היכולת GET_EXERCISE_OBSERVATION
, מעדכנים את מחלקה של הווידג'ט כך שתתמוך בהפעלה קולית של 'פעולות באפליקציה'.
הוספה של ספריית התוספים לווידג'טים
ספריית התוספים של הווידג'טים של 'פעולות באפליקציה' משפרת את הווידג'טים לחוויות של Assistant להעברה קולית. באופן ספציפי, היא מאפשרת לך לספק הקדמה מותאמת אישית של TTS עבור הווידג'טים שלך.
- צריך להוסיף את התלות של ספריית התוספים של הווידג'טים למשאב
/app/build.gradle
של האפליקציה לדוגמה:
לוחצים על סנכרון עכשיו בתיבת האזהרה שמופיעה ב-Android Studio. סנכרון אחרי כל שינוי ב-// app/build.gradle dependencies { //... implementation "com.google.assistant.appactions:widgets:0.0.1" }
build.gradle
עוזר למנוע שגיאות במהלך פיתוח האפליקציה.
הוספת שירות הווידג'ט
שירות הוא רכיב באפליקציה שיכול לבצע פעולות ממושכות ברקע. האפליקציה שלך צריכה לספק שירות כדי לעבד בקשות לווידג'טים.
- מוסיפים שירות למשאב
AndroidManifest.xml
של האפליקציה לדוגמה עם ההגדרה הזו:<!-- 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>
במהלך שאילתה קולית שמפעילה מילוי בקשה בווידג'ט, Assistant משתמשת בשירות הזה כדי לשלוח בקשות לאפליקציה. השירות מקבל את הבקשה יחד עם נתוני ה-BII. השירות משתמש בנתונים האלה כדי ליצור אובייקט של ווידג'ט RemoteView
לעיבוד ב-Assistant.
עדכון מחלקת הווידג'טים
האפליקציה שלך מוגדרת עכשיו לנתב בקשות של יכולת GET_EXERCISE_OBSERVATION
למחלקה של הווידג'טים. בשלב הבא, מעדכנים את המחלקה StatsWidget.kt
כדי ליצור מופע ווידג'ט שמותאם אישית לבקשת המשתמש, באמצעות ערכי פרמטרים של BII.
- פותחים את הכיתה
StatsWidget.kt
ומייבאים את ספריית התוספים לווידג'טים של פעולות באפליקציה:// StatsWidget.kt // ... Other import statements import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
- מוסיפים את המשתנים הפרטיים הבאים, שבהם משתמשים כדי לקבוע איזה מידע צריך לאכלס את הווידג'ט:
// StatsWidget.kt private val hasBii: Boolean private val isFallbackIntent: Boolean private val aboutExerciseName: String private val exerciseType: FitActivity.Type
- אפשר להוסיף את הפונקציה
init
כדי לאפשר לכיתה להשתמש בנתוני האפשרויות של הווידג'ט שמועברים מ-Assistant:// 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) }
בואו נראה איך העדכונים האלה מאפשרים לכיתה StatsWidget.kt
להגיב לאובייקטים של Intent של Android שנוצרו על ידי היכולת GET_EXERCISE_OBSERVATION
:
optionsBundle
= חבילה- חבילות הן אובייקטים שמיועדים לשימוש מעבר לגבולות של תהליכים, בין פעילויות עם כוונות ולאחסון מצב זמני בכל שינוי של הגדרות אישיות. Assistant משתמשת באובייקטים מסוג
Bundle
כדי להעביר את נתוני ההגדרות לווידג'ט.
- חבילות הן אובייקטים שמיועדים לשימוש מעבר לגבולות של תהליכים, בין פעילויות עם כוונות ולאחסון מצב זמני בכל שינוי של הגדרות אישיות. Assistant משתמשת באובייקטים מסוג
bii
=actions.intent.GET_EXERCISE_OBSERVATION
- שם ה-BII זמין מהחבילה באמצעות
AppActionsWidgetExtension
.
- שם ה-BII זמין מהחבילה באמצעות
hasBii
=true
- המערכת בודקת אם יש BII.
params
=Bundle[{aboutExerciseName=running}]
- חבילה מיוחדת, שנוצרה על ידי 'פעולות באפליקציה', מוצבת בתוך אפשרויות הווידג'ט
Bundle
. הוא מכיל את צמדי מפתח/ערך של ה-BII. במקרה הזה, הערךrunning
חולץ מהשאילתה לדוגמה, "Ok Google, show my running history on ExampleApp".
- חבילה מיוחדת, שנוצרה על ידי 'פעולות באפליקציה', מוצבת בתוך אפשרויות הווידג'ט
isFallbackIntent
=false
- הפונקציה בודקת אם יש פרמטרים נדרשים של BII ב-Intent
Extras
.
- הפונקציה בודקת אם יש פרמטרים נדרשים של BII ב-Intent
aboutExerciseName
=running
- הפונקציה מקבלת את הערך של Intent
Extras
עבורaboutExerciseName
.
- הפונקציה מקבלת את הערך של Intent
exerciseType
=RUNNING
- משתמש ב-
aboutExerciseName
כדי לחפש את האובייקט התואם של סוג מסד הנתונים.
- משתמש ב-
עכשיו, כשהמחלקה StatsWidget
יכולה לעבד נתוני Intent נכנסים של פעולות באפליקציה, צריך לעדכן את הלוגיקה של תהליך יצירת הווידג'ט כדי לבדוק אם הווידג'ט הופעל על ידי פעולה באפליקציה.
- ב-
StatsWidget.kt
, מחליפים את הפונקציהupdateAppWidget()
בקוד הבא:// 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() }
הקוד הקודם מפנה לפונקציה חדשה, observeAndUpdateRequestedExercise
. הפונקציה הזו יוצרת נתוני ווידג'ט באמצעות נתוני הפרמטר exerciseType
שמועברים על ידי Intent של Android לפעולות באפליקציה.
- מוסיפים את הפונקציה
observeAndUpdateRequestedExercise
עם הקוד הבא:// 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() } } }
בקוד הקודם, צריך להשתמש במחלקה קיימת של repository שנמצאה באפליקציה כדי לאחזר נתוני כושר ממסד הנתונים המקומי של האפליקציה. הכיתה הזו מספקת API שמפשט את הגישה למסד הנתונים. המאגר פועל על ידי חשיפת אובייקט LiveData במהלך ביצוע שאילתות מול מסד הנתונים. בקוד שלך מופיע LiveData
הזה כדי לאחזר את פעילות הכושר האחרונה.
הפעלת TTS
אפשר להוסיף מחרוזת TTS כדי ש-Assistant תכריז עליה כשהווידג'ט מוצג. מומלץ לכלול את האפשרות הזו כדי לספק הקשר קולי לווידג'טים. הפונקציונליות הזו זמינה בספריית התוספים לווידג'טים של פעולות באפליקציה, שמאפשרת להגדיר את ההקדמה לטקסט ול-TTS שנלווה לווידג'טים ב-Assistant.
כדאי להציג את ההקדמה ל-TTS בפונקציה formatDataAndSetWidget
, שמעצבת את נתוני הפעילות שמוחזרים ממסד הנתונים של האפליקציה.
- בפונקציה
StatsWidget.kt
, מוסיפים את הקוד הבא לפונקציהformatDataAndSetWidget
:// 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) } }
הקוד הקודם מפנה לשני משאבי מחרוזות: אחד לדיבור והשני לטקסט. כדאי לעיין בחלק המלצה לסגנון המרת טקסט לדיבור (TTS) בסרטון הווידג'טים שלנו כדי לקבל המלצות בנושא TTS. הדוגמה מתייחסת גם אל setTts
, פונקציה חדשה שמספקת את פרטי ה-TTS למופע הווידג'ט.
- צריך להוסיף את פונקציית
setTts
החדשה אלStatsWidget.kt
באמצעות הקוד הזה:// 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) }
לבסוף, משלימים את הלוגיקה של TTS על ידי הגדרת פרטי TTS כשמסד הנתונים של התרגילים מחזיר נתונים ריקים עבור סוג אימון מבוקש.
- מעדכנים את הפונקציה
setNoActivityDataWidget()
ב-StatsWidget.kt
עם הקוד הבא:// 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. בדיקת הפעולה באפליקציה
במהלך הפיתוח, משתמשים בפלאגין של Google Assistant כדי לראות תצוגה מקדימה של 'פעולות באפליקציה של Assistant' במכשיר בדיקה. אפשר לשנות את הפרמטרים של Intent של פעולה באפליקציה באמצעות הכלי כדי לבדוק איך הפעולה מטפלת בדרכים השונות שבהן משתמש עשוי לבקש מ-Assistant להפעיל אותה.
יצירת קטע מקדים
כדי לבדוק את הפעולה באפליקציה באמצעות הפלאגין:
- עוברים אל כלים > Google Assistant > כלי הבדיקה של פעולות באפליקציה. יכול להיות שתתבקשו להיכנס ל-Android Studio באמצעות חשבון Google שלכם.
- לוחצים על יצירת תצוגה מקדימה. אם מופיעה בקשה, קוראים את המדיניות ואת התנאים וההגבלות של 'פעולות באפליקציה' ומאשרים אותם.
בדקו סוג של פעילות גופנית שאתם מצפים לה
להחזיר ווידג'ט שמציג מידע על ההפעלה האחרונה שהושלמה באפליקציה לפי השלבים הבאים בכלי הבדיקה:
- בשלב הראשון, שבו הכלי יבקש מכם לבחור ולהגדיר את ה-BII, צריך לבחור באפשרות
actions.intent.GET_EXERCISE_OBSERVATION
. - בתיבה exerciseObservation, מעדכנים את שם ברירת המחדל של התרגיל מ-
climbing
ל-run
. - לוחצים על Run App Action (הפעלת פעולה באפליקציה).
בדקו תרגיל מסוג בלתי צפוי
כדי לבדוק סוג תרגיל לא צפוי בכלי הבדיקה:
- בתיבה exerciseObservation, מעדכנים את הערך של
name
מ-Run
ל-Climbing
. - לוחצים על Run App Action (הפעלת פעולה באפליקציה).
Assistant צריכה להחזיר ווידג'ט עם ההודעה 'לא נמצאה פעילות' מידע.
בדיקת Intent חלופי
השאילתות שמפעילות את הכוונה החלופית אמורות להחזיר ווידג'ט שמציג מידע על הפעילות האחרונה שתועדה, מכל סוג של תרגיל.
כדי לבדוק את ה-Intent החלופי:
- בתיבה exerciseObservation, מוחקים את האובייקט
aboutExercise
. - לוחצים על Run App Action (הפעלת פעולה באפליקציה).
Assistant אמורה להחזיר ווידג'ט שמציג מידע על התרגיל האחרון שהושלמה.
7. השלבים הבאים
מעולה!
עכשיו יש לך את הכוח לספק באמצעות ווידג'ט של Android עם Assistant,
הנושאים שטיפלנו בהם
ב-Codelab הזה למדת איך:
- הוספת ווידג'ט של אפליקציה ל-BII.
- שינוי ווידג'ט כדי לגשת לפרמטרים מ-Android Extras.
המאמרים הבאים
מכאן אפשר לנסות לבצע שיפורים נוספים באפליקציית הכושר. כדי להתייחס לפרויקט הסופי, תוכלו לעיין במאגר הראשי ב-GitHub.
בהמשך מופיעות כמה הצעות ללמידה נוספת בנוגע להרחבת האפליקציה הזו באמצעות 'פעולות באפליקציה':
- דרכים נוספות להרחבת האפליקציות ל-Assistant מפורטות בחומר העזר בנושא כוונות מובנות של 'פעולות באפליקציה'.
כדי להמשיך בתהליך שלך ב-Actions on Google, כדאי לעיין במקורות המידע הבאים:
- developers.google.com/assistant/app: אתר תיעוד רשמי לפעולות באפליקציה של Google Assistant.
- אינדקס לדוגמה של פעולות באפליקציה: אפליקציות וקוד לדוגמה לצורך התנסות ביכולות של 'פעולות באפליקציה'.
- פעולות במאגר GitHub של Google: קוד וספריות לדוגמה.
- r/GoogleAssistantDev: הקהילה הרשמית של Reddit למפתחים שעובדים עם Google Assistant.
אפשר לעקוב אחרינו ב- @ActionsOnGoogle בטוויטר כדי להתעדכן בהכרזות האחרונות שלנו, ולשלוח ציוץ אל #appactions כדי לשתף את מה שפיתחתם!
סקר משוב
לסיום, מלאו את הסקר הזה כדי לשלוח משוב על החוויה שלכם ב-Codelab הזה.