1. نظرة عامة
في الدرس التطبيقي الأول حول ترميز "مهامّ في التطبيقات"، تعلمت كيفية توسيع نطاق "مساعد Google" ليشمل تطبيق لياقة بدنية من خلال تنفيذ أهداف مضمَّنة (BII) من فئة "الصحة واللياقة البدنية" BII.
تتيح ميزة "المهام في التطبيقات" للمستخدمين تشغيل ميزات معيّنة مباشرةً من "مساعد Google" من خلال توجيه طلبات مثل "Ok Google، أريد بدء عملية تشغيل على ExampleApp". بالإضافة إلى إطلاق التطبيقات، يمكن أن يعرض "مساعد Google" للمستخدم تطبيق Android مصغّرًا تفاعليًا لتلبية طلبات مؤشرات BII المؤهَّلة.
ما الذي ستقوم ببنائه
في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية إرجاع تطبيقات Android المصغّرة لتلبية طلبات مستخدمي "مساعد Google". ويمكنك أيضًا معرفة ما يلي:
- مَعلمات المستخدم BII لتخصيص التطبيقات المصغّرة
- يمكنك توفير مقدمات ميزة "تحويل النص إلى كلام" في "مساعد Google" لتطبيقاتك المصغّرة.
- استخدِم مرجع intent المدمَج لتحديد BII المتوافقة مع تنفيذ التطبيقات المصغّرة.
المتطلبات الأساسية
قبل المتابعة، يُرجى التأكّد من أنّ بيئة التطوير جاهزة لتطوير خدمة "مهامّ في التطبيقات". يجب أن يحتوي على:
- وحدة طرفية لتشغيل أوامر واجهة الأوامر، مع تثبيت git
- يشير إلى أحدث إصدار ثابت من استوديو Android.
- جهاز Android فعلي أو افتراضي مزود بإمكانية الاتصال بالإنترنت.
- حساب Google تم تسجيل الدخول منه إلى "استوديو Android" وتطبيق Google وتطبيق "مساعد Google"
إذا كنت تستخدم جهازًا ماديًا، عليك توصيله بجهاز التطوير المحلي.
2. التعرّف على طريقة العمل
يستخدم "مساعد Google" تقنية "فهم اللغة الطبيعية" (NLU) لقراءة طلب المستخدم ومطابقته مع طلب intent مدمج في "مساعد Google" (BII). بعد ذلك، يربط "مساعد Google" الغرض بالوظيفة (التي تنفِّذ BII)، التي تسجّلها في تطبيقك لهذا الغرض. وأخيرًا، ينفّذ "مساعد Google" طلب المستخدم من خلال عرض تطبيق Android المصغّر الذي ينشئه تطبيقك باستخدام التفاصيل المتوفّرة في هذه الميزة.
في هذا الدرس التطبيقي حول الترميز، يمكنك تحديد إمكانية تُسجِّل الدعم لـ GET_EXERCISE_OBSERVATION
BII. في هذه الميزة، أنت تطلب من "مساعد Google" إنشاء آلية Android intent لفئة التطبيق المصغّرة FitActions
لتنفيذ طلبات ”BII“. يمكنك تعديل هذا الصف لإنشاء تطبيق مصغّر مخصّص ليعرضه "مساعد Google" للمستخدم ومقدمة عن تقنية تحويل النص إلى كلام ليعلِن عنها "مساعد Google".
يوضح المخطّط التالي هذا التدفق:
أداة FitActions
يحتوي نموذج تطبيق FitActions على أداة تتضمّن معلومات عن التمارين الرياضية يمكن للمستخدمين إضافتها إلى الشاشة الرئيسية. هذه الأداة مناسبة جدًا لتلبية طلبات المستخدمين التي تؤدي إلى تشغيل GET_EXERCISE_OBSERVATION
BII.
طريقة عمل التطبيق المصغّر
عندما يضيف مستخدم أداة إلى الشاشة الرئيسية، ترسل الأداة إشعارًا إلى جهاز استقبال البث للجهاز. تسترد هذه الخدمة معلومات عن التطبيق المصغّر من تعريف مستقبل التطبيق في مورد 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()
"
إضافة دعم "مساعد Google"
في هذا الدرس التطبيقي حول الترميز، يمكنك تحديث نموذج التطبيق للتعامل مع وظائف "إجراءات التطبيقات". وتشمل هذه التغييرات ما يلي:
- جارٍ ضبط إمكانية
GET_EXERCISE_OBSERVATION
BII لعرض نسخة افتراضية من الكائنStatsWidget
. - جارٍ تعديل فئة "
StatsWidget
" لاستخدام ميزات "مهامّ في التطبيقات"، مثل:- استخدام مَعلمات BII، ما يتيح للمستخدمين الاطّلاع على إحصاءات تمارين معيّنة عبر توجيه طلبات مثل "Ok Google، أريد عرض إحصاءات الجري على ExampleApp"
- تقديم سلاسل مقدمة لتقنية تحويل النص إلى كلام (TTS).
- إدارة الحالات الخاصة، مثل الحالات التي لا يتضمّن فيها طلب بحث المستخدم مَعلمة لنوع التمرين
3- إعداد بيئة التطوير
تنزيل ملفاتك الأساسية
شغِّل هذا الأمر لاستنساخ نموذج مستودع GitHub للتطبيق:
git clone --branch start-widget-codelab https://github.com/actions-on-google/appactions-fitness-kotlin.git
بعد استنساخ المستودع، اتّبِع الخطوات التالية لفتحه في "استوديو Android":
- في مربّع الحوار "مرحبًا بك في استوديو Android"، انقر على استيراد مشروع.
- ابحث عن المجلد الذي استنسخت المستودع فيه واختَره.
للاطّلاع على إصدار من التطبيق الذي يمثّل الدرس التطبيقي المكتمل حول الترميز، عليك استنساخ نموذج مستودع التطبيق باستخدام العلامة --branch master
.
تعديل رقم تعريف تطبيق Android
يؤدي تعديل معرّف التطبيق الخاص بالتطبيق إلى التعرّف على التطبيق بشكلٍ فريد على الجهاز الاختباري وتجنُّب ظهور "اسم حزمة مكرّر". إذا تم تحميل التطبيق على Play Console. لتعديل معرّف التطبيق، افتح app/build.gradle
:
android {
...
defaultConfig {
applicationId "com.MYUNIQUENAME.android.fitactions"
...
}
}
استبدال "MYUNIQUENAME" في الحقل applicationId
إلى معلومات فريدة لك.
تثبيت المكوّن الإضافي للاختبار
يتيح لك مكوّن "مساعد Google" الإضافي اختبار خدمة "مهامّ في التطبيقات" على جهاز اختبار. يتم تفعيل الميزة عن طريق إرسال معلومات إلى "مساعد Google" من خلال تطبيق Google على جهاز Android. إذا لم يكن المكوّن الإضافي متوفرًا لديك، يمكنك تثبيته باتّباع الخطوات التالية:
- انتقل إلى ملف > الإعدادات (استوديو Android > الإعدادات المفضّلة على نظام التشغيل MacOS).
- في قسم "المكوّنات الإضافية"، انتقِل إلى السوق وابحث عن "مساعد Google". يمكنك أيضًا تنزيل أداة الاختبار وتثبيتها يدويًا.
- ثبِّت الأداة وأعِد تشغيل "استوديو Android".
اختبار التطبيق على جهازك
قبل إجراء المزيد من التغييرات على التطبيق، من المفيد الحصول على فكرة عما يمكن أن يفعله نموذج التطبيق.
تشغيل التطبيق على جهاز الاختبار:
- في "استوديو Android"، اختَر الجهاز الفعلي أو الافتراضي وانقر على تشغيل >. شغِّل التطبيق أو انقر على تشغيل في شريط الأدوات.
- اضغط مع الاستمرار على زر الشاشة الرئيسية لإعداد "مساعد Google" والتأكّد من أنّه يعمل. عليك تسجيل الدخول إلى "مساعد Google" على جهازك، إذا لم يسبق لك إجراء ذلك.
لمزيد من المعلومات حول أجهزة Android الافتراضية، يُرجى الاطّلاع على مقالة إنشاء الأجهزة الافتراضية وإدارتها.
استكشف التطبيق بإيجاز لمعرفة ما يمكنه فعله. يملأ التطبيق 10 أنشطة تمارين تلقائيًا ويعرض هذه المعلومات من العرض الأول.
تجربة التطبيق المصغّر الحالي
- انقر على زر الشاشة الرئيسية للانتقال إلى الشاشة الرئيسية للجهاز الاختباري.
- اضغط مع الاستمرار على مساحة فارغة في الشاشة الرئيسية واختَر التطبيقات المصغّرة.
- انتقِل للأسفل في قائمة التطبيقات المصغّرة للوصول إلى FitActions.
- اضغط مع الاستمرار على رمز FitActions وضعه على الشاشة الرئيسية.
4. إضافة إجراء التطبيق
في هذه الخطوة، يمكنك إضافة إمكانية GET_EXERCISE_OBSERVATION
BII. ويمكنك إجراء ذلك من خلال إضافة عنصر 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
الفريدة.
تربط هذه الميزة GET_EXERCISE_OBSERVATION
BII بالهدف app-widget
، وبالتالي عند تشغيل BII، يتم إنشاء مثيل للأداة وعرضها للمستخدم.
قبل تشغيل التطبيق المصغّر، يستخلص "مساعد Google" مَعلمات BII المتوافقة من طلب بحث المستخدم. يتطلّب هذا الدرس التطبيقي حول الترميز مَعلمة BII exerciseObservation.aboutExercise.name
التي تمثّل نوع التمرين الذي طلبه المستخدم. يتوافق التطبيق مع ثلاثة أنواع من التمارين: "الجري" و"المشي" و"ركوب الدراجات". ويجب توفير مستودع مضمّن لإبلاغ "مساعد Google" بهذه القيم المسموح بها.
- تحديد عناصر المستودع هذه من خلال إضافة هذه الإعدادات، أعلى إمكانية
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>
إضافة هدف احتياطي
تتعامل الأهداف الاحتياطية مع الحالات التي يتعذّر فيها تنفيذ طلب بحث المستخدم بسبب عدم توفُّر معلَمات في طلب البحث. تتطلّب إمكانية GET_EXERCISE_OBSERVATION
المَعلمة exerciseObservation.aboutExercise.name
التي تحدّدها السمة android:required="true"
. في هذه الحالات، يطلب منك "مساعد Google" تحديد هدف احتياطي للسماح بنجاح الطلب، حتى إذا لم يتم توفير أي مَعلمات في طلب البحث.
- في
shortcuts.xml
، أضِف هدفًا احتياطيًا إلى الميزة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>
في نموذج الإعدادات هذا، يكون التنفيذ الاحتياطي عبارة عن هدف Android بدون معلَمات في بيانات Extra
.
5- تفعيل التطبيق المصغّر في "مساعد Google"
بعد إنشاء إمكانية GET_EXERCISE_OBSERVATION
، يمكنك تحديث فئة التطبيق المصغّر لإتاحة الاستدعاء الصوتي في "مهامّ في التطبيقات".
إضافة مكتبة إضافة Widgets
تعمل مكتبة إضافة التطبيقات المصغّرة على تحسين التطبيقات المصغّرة لتجارب "مساعد Google" التي تستخدم ميزة إعادة التوجيه الصوتي. وعلى وجه التحديد، تمكّنك الخدمة من توفير مقدمة مخصّصة لتقنية "تحويل النص إلى كلام" (TTS) لتطبيقاتك.
- أضِف تبعية مكتبة إضافة التطبيقات المصغّرة إلى نموذج مورد
/app/build.gradle
للتطبيق:
انقر على المزامنة الآن في مربّع التحذير الذي يظهر في "استوديو Android". تساعدك المزامنة بعد كل تغيير في// 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>
يستخدم "مساعد Google" هذه الخدمة لإرسال الطلبات إلى التطبيق عند إجراء طلب صوتي يؤدي إلى تنفيذ التطبيقات المصغّرة. تتلقّى الخدمة الطلب مع بيانات BII. تستخدم الخدمة هذه البيانات لإنشاء عنصر مصغّر RemoteView
لعرضه في "مساعد Google".
تعديل فئة التطبيق المصغّر
تم إعداد تطبيقك الآن لتوجيه طلبات إمكانات 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
للسماح للصف باستخدام بيانات خيارات الأداة التي يتم تمريرها من "مساعد Google":// 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
الاستجابة لأهداف Android التي تم إنشاؤها من خلال ميزة GET_EXERCISE_OBSERVATION
:
optionsBundle
= حزمة- الحِزم هي كائنات مصمَّمة للاستخدام عبر حدود العملية، وبين الأنشطة ذات الأهداف، وتخزين الحالة المؤقتة على مستوى تغييرات الضبط. يستخدم "مساعد Google" عناصر
Bundle
لتمرير بيانات الإعداد إلى التطبيق المصغّر.
- الحِزم هي كائنات مصمَّمة للاستخدام عبر حدود العملية، وبين الأنشطة ذات الأهداف، وتخزين الحالة المؤقتة على مستوى تغييرات الضبط. يستخدم "مساعد Google" عناصر
bii
=actions.intent.GET_EXERCISE_OBSERVATION
- ويتوفّر اسم BII من الحزمة باستخدام
AppActionsWidgetExtension
.
- ويتوفّر اسم BII من الحزمة باستخدام
hasBii
=true
- يتم التحقق لمعرفة ما إذا كان هناك BII.
params
=Bundle[{aboutExerciseName=running}]
- يتم دمج حِزمة خاصة تم إنشاؤها باستخدام خدمة "مهامّ في التطبيقات" داخل خيارات التطبيق المصغّر
Bundle
. يحتوي على أزواج المفتاح/القيمة من BII. في هذه الحالة، تم استخراج القيمةrunning
من مثال طلب البحث "Ok Google، أريد عرض إحصاءات الجري على ExampleApp".
- يتم دمج حِزمة خاصة تم إنشاؤها باستخدام خدمة "مهامّ في التطبيقات" داخل خيارات التطبيق المصغّر
isFallbackIntent
=false
- يتحقّق من توفّر مَعلمات BII المطلوبة في الغرض
Extras
.
- يتحقّق من توفّر مَعلمات BII المطلوبة في الغرض
aboutExerciseName
=running
- تحصل على قيمة
Extras
الغرض لـaboutExerciseName
.
- تحصل على قيمة
exerciseType
=RUNNING
- تستخدم هذه الدالة
aboutExerciseName
للبحث عن كائن نوع قاعدة البيانات المقابل.
- تستخدم هذه الدالة
والآن بعد أن أصبح بإمكان الفئة StatsWidget
معالجة البيانات الواردة من Android لـ "مهامّ في التطبيقات"، عليك تعديل منطق عملية إنشاء التطبيق المصغّر للتحقّق مما إذا كان قد تم تشغيل الأداة من خلال "إجراء تطبيق".
- في
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
التي يتم تمريرها من خلال هدف 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() } } }
في الرمز السابق، استخدِم فئة مستودع حالية تم العثور عليها في التطبيق لاسترداد بيانات اللياقة البدنية من قاعدة بيانات التطبيق المحلية. توفّر هذه الفئة واجهة برمجة تطبيقات تسهِّل إمكانية الوصول إلى قاعدة البيانات. يعمل المستودع عن طريق عرض كائن LiveData عند إجراء طلبات بحث مقابل قاعدة البيانات. في رمزك، تلاحظ هذا LiveData
لاسترداد آخر نشاط للياقة البدنية.
تفعيل ميزة "تحويل النص إلى كلام"
يمكنك تقديم سلسلة "تحويل النص إلى كلام" لكي يعلن عنها "مساعد Google" عند عرض تطبيقك المصغّر. ننصحك بتضمين هذه السمة لتوفير سياق مسموع باستخدام التطبيقات المصغّرة. ويتم توفير هذه الوظيفة من خلال مكتبة إضافات التطبيقات المصغّرة الخاصة بـ "مهامّ في التطبيقات"، والتي تتيح لك إعداد النصوص ومقدّمات "تحويل النص إلى كلام" المصاحبة للأدوات في "مساعد Google".
تُعد الدالة formatDataAndSetWidget
مكانًا جيدًا لتقديم مقدمة عن تقنية تحويل النص إلى كلام (TTS) التي تنسق بيانات النشاط التي يتم عرضها من قاعدة بيانات التطبيق.
- في
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) } }
يشير الرمز السابق إلى مصدري سلسلة: أحدهما للكلام والآخر للنص. يمكنك مشاهدة الجزء اقتراح نمط تحويل النص إلى كلام في فيديو التطبيقات المصغّرة للحصول على اقتراحات لتحويل النص إلى كلام. يشير النموذج أيضًا إلى الدالة 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) }
وأخيرًا، أكمل منطق تحويل النص إلى كلام من خلال ضبط معلومات تقنية تحويل النص إلى كلام عندما تقوم قاعدة بيانات التمارين بإرجاع بيانات فارغة لنوع التمرين المطلوب.
- عدِّل الدالة
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" الإضافي لمعاينة "الإجراءات في تطبيق "مساعد Google" على جهاز اختبار. ويمكنك تعديل معلَمات intent لإجراء تطبيق باستخدام الأداة لاختبار طريقة تعامل هذا الإجراء مع الطرق المختلفة التي قد يطلب المستخدم من "مساعد Google" تنفيذها.
إنشاء معاينة
لاختبار إجراء التطبيق باستخدام المكوّن الإضافي:
- انتقِل إلى الأدوات > مساعد Google > أداة اختبار "الإجراءات في التطبيق" قد يُطلب منك تسجيل الدخول إلى "استوديو Android" باستخدام حسابك على Google.
- انقر على إنشاء معاينة. راجِع سياسات خدمة "مهامّ في التطبيقات" وبنود الخدمة واقبلها إذا طُلِب منك ذلك.
اختبار نوع تمرين متوقع
عرض أداة تعرض معلومات عن آخر عملية تشغيل مكتملة في التطبيق باتباع الخطوات التالية في أداة الاختبار:
- في الخطوة الأولى حيث تطلب منك الأداة اختيار ملف BII وضبطه، اختَر
actions.intent.GET_EXERCISE_OBSERVATION
. - في مربّع exerciseObservation، عدِّل اسم التمرين التلقائي من
climbing
إلىrun
. - انقر على تشغيل إجراء على التطبيق.
اختبار نوع تمرين غير متوقَّع
لاختبار نوع تمرين غير متوقع في أداة الاختبار:
- في مربع exerciseObservation، عدِّل قيمة
name
منRun
إلىClimbing
. - انقر على تشغيل إجراء على التطبيق.
من المفترض أن يعرض "مساعد Google" تطبيقًا مصغّرًا يعرض الرسالة "لم يتم العثور على أي نشاط". المعلومات.
اختبار الإجراء الاحتياطي
يجب أن تؤدي طلبات البحث التي تؤدي إلى الغرض الاحتياطي إلى عرض أداة تعرض معلومات حول آخر نشاط تم تسجيله من أي نوع تمرين.
لاختبار الغرض الاحتياطي:
- في مربع exerciseObservation، احذف عنصر
aboutExercise
. - انقر على تشغيل إجراء على التطبيق.
من المفترض أن يعرض "مساعد Google" تطبيقًا مصغّرًا يعرض معلومات عن آخر تمرين مكتمل.
7. الخطوات التالية
تهانينا!
لديك الآن القدرة على تلبية احتياجات المستخدمين باستخدام أداة Android المصغّرة مع "مساعد Google".
المواضيع التي تناولناها
في هذا الدرس التطبيقي حول الترميز، تعلمتَ كيفية:
- إضافة تطبيق مصغّر إلى BII.
- عدِّل أداة للوصول إلى المعلمات من Android Extras.
الخطوات التالية
ومن هنا، يمكنك محاولة إجراء مزيد من التحسينات على تطبيق اللياقة البدنية. للرجوع إلى المشروع النهائي، يُرجى الاطّلاع على المستودع الرئيسي على GitHub.
في ما يلي بعض الاقتراحات لمزيد من المعلومات حول توسيع نطاق هذا التطبيق باستخدام ميزة "مهامّ في التطبيقات":
- انتقِل إلى مرجع الأهداف المضمّنة في "مهامّ في التطبيقات" للاطّلاع على مزيد من الطرق لتوسيع نطاق وصول تطبيقاتك إلى "مساعد Google".
لمواصلة رحلتك في "المهام مع مساعد Google"، يُرجى الاطّلاع على المراجع التالية:
- developers.google.com/assistant/app: الموقع الإلكتروني الرسمي للمستندات الخاصّ بالمهام في تطبيق "مساعد Google".
- نموذج فهرس "المهام في التطبيقات": نموذج تطبيقات ورموز لاستكشاف إمكانات "مهامّ في التطبيقات".
- مستودع "المهام مع مساعد Google" على GitHub: نموذج الرموز البرمجية والمكتبات.
- r/GoogleAssistantDev: منتدى Reddit الرسمي للمطوّرين الذين يستخدمون "مساعد Google"
يمكنك متابعتنا على Twitter @ActionsOnGoogle لمعرفة آخر الأخبار، كما يمكنك نشر تغريدة على #appactions لمشاركة ما أنجزته.
استطلاع لجمع الملاحظات
أخيرًا، يُرجى ملء هذا الاستطلاع لتقديم ملاحظاتك حول تجربتك في هذا الدرس التطبيقي.