ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयों की मदद से, किसी Android ऐप्लिकेशन को Google Assistant के लिए उपलब्ध कराना

1. खास जानकारी

ऐप्लिकेशन कार्रवाइयों की मदद से, Google Assistant का इस्तेमाल करके सीधे ऐप्लिकेशन की सुविधाओं पर जाया जा सकता है. साथ ही, अपनी आवाज़ का इस्तेमाल करके टास्क पूरे किए जा सकते हैं. Android डेवलपर के तौर पर, ऐप्लिकेशन कार्रवाइयां जोड़ने के लिए, क्षमता वाले एलिमेंट लागू किए जाते हैं. 'सुविधाएँ' की मदद से Assistant को यह पता चलता है कि ऐप्लिकेशन की कौनसी सुविधाएँ, बोलकर किए गए अनुरोधों के साथ काम करती हैं. साथ ही, इससे यह भी पता चलता है कि आपको उन अनुरोधों को कैसे पूरा करना है.

इस कोडलैब में, ऐप्लिकेशन ऐक्शन का इस्तेमाल करके डेवलपमेंट करने से जुड़े शुरुआती लेवल के कॉन्सेप्ट के बारे में बताया गया है. इस कोडलैब को पूरा करने के लिए, आपके पास Android ऐप्लिकेशन डेवलप करने और Android इंटेंट का अनुभव होना चाहिए. अगर आपको Android के बारे में कुछ भी नहीं पता, तो Android डेवलपर की बुनियादी बातों के बारे में जानकारी देने वाले कोडलैब से शुरुआत करें.

आपको क्या बनाना है

इस कोडलैब में, आपको फ़िटनेस से जुड़े किसी Android ऐप्लिकेशन में, ऐप्लिकेशन कार्रवाइयों के दो बिल्ट-इन इंटेंट (बीआईआई) जोड़ने का तरीका बताया जाएगा. इससे उपयोगकर्ता, बोलकर कसरत का टाइमर शुरू और बंद कर पाएंगे.

आपको क्या सीखने को मिलेगा

आपको स्वास्थ्य और फ़िटनेस कैटगरी के बीआईआई इस्तेमाल करने का तरीका बताया जाएगा, ताकि Assistant को Android ऐप्लिकेशन के साथ जोड़ा जा सके. आपको Android Studio के लिए Google Assistant प्लगिन इस्तेमाल करने का तरीका भी बताया जाएगा, ताकि बीआईआई की जांच की जा सके.

ज़रूरी शर्तें

जारी रखने से पहले, पक्का करें कि आपके एनवायरमेंट में ये टूल मौजूद हों:

  • git इंस्टॉल किया गया टर्मिनल, ताकि शेल कमांड चलाई जा सकें.
  • Android Studio का नया वर्शन.
  • ऐसा Google खाता जिसके पास [Google Play Console][] का ऐक्सेस हो.
  • ऐसा फ़िज़िकल या वर्चुअल Android डिवाइस जिस पर Play Store ऐक्सेस करने के लिए इंटरनेट उपलब्ध हो.

आगे बढ़ने से पहले, पक्का करें कि Android Studio में उसी Google खाते से साइन इन किया गया हो जिसका इस्तेमाल आपने टेस्ट डिवाइस पर Google ऐप्लिकेशन में किया था.

2. जानें कि यह सुविधा कैसे काम करती है

ऐप्लिकेशन कार्रवाइयों की मदद से, Google Assistant के उपयोगकर्ताओं को आपके Android ऐप्लिकेशन से कनेक्ट किया जाता है. ये कार्रवाइयां कैसे काम करती हैं?

जब कोई उपयोगकर्ता, Assistant से आपके ऐप्लिकेशन का इस्तेमाल करके कोई टास्क पूरा करने के लिए कहता है, तो Assistant उसकी क्वेरी को आपके ऐप्लिकेशन के shortcuts.xml XML संसाधन में तय की गई ऐप्लिकेशन कार्रवाइयों capability से मैच करती है.

इस फ़्लो डायग्राम में दिखाया गया है कि Google Assistant, ऐप्लिकेशन ऐक्शन के लिए की गई बोलकर खोजने की क्वेरी को कैसे प्रोसेस करती है

पहली इमेज. फ़्लो डायग्राम में दिखाया गया है कि Assistant, ऐप्लिकेशन ऐक्शन के लिए की गई बोलकर खोज की क्वेरी को कैसे प्रोसेस करती है.

हर क्षमता एलिमेंट से यह तय होता है:

  • इन्टेंट: ऐप्लिकेशन कार्रवाइयों के लिए, आवाज़ से ट्रिगर होने वाला इंटेंट, जिससे सुविधा चालू होनी चाहिए.
  • एक या उससे ज़्यादा फ़ुलफ़िलमेंट: Android इंटेंट या डीप लिंक, जिन्हें Assistant ऐप्लिकेशन लॉन्च करने और उपयोगकर्ता की बोलकर की गई अनुरोध को पूरा करने के लिए जनरेट करती है. फ़ुलफ़िलमेंट की परिभाषाओं में यह बताया जाता है कि उपयोगकर्ता की क्वेरी से किन पैरामीटर की उम्मीद की जाती है. साथ ही, यह भी बताया जाता है कि लॉन्च करने के निर्देशों में उन पैरामीटर को कैसे कोड में बदला जाना चाहिए.

मूड

नैचुरल लैंग्वेज अंडरस्टैंडिंग (एनएलयू) में, इंटेंट का मतलब उपयोगकर्ता के ऐसे वाक्यांशों के ग्रुप से होता है जिनका मतलब एक जैसा होता है. Google ने कई "बिल्ट-इन" इंटेंट (बीआईआई) बनाए हैं. ये अलग-अलग तरह के अनुरोधों को पूरा करते हैं. इन्हें ऐप्लिकेशन कार्रवाइयों के साथ इस्तेमाल किया जा सकता है. उदाहरण के लिए, Assistant को "पिज़्ज़ा ऑर्डर करो" या "मुझे डेज़र्ट का मेन्यू दिखाओ" जैसे वाक्यांशों को ORDER_MENU_ITEM BII से जोड़ने के लिए ट्रेन किया गया है. ऐप्लिकेशन ऐक्शन की मदद से, इन बीआईआई का इस्तेमाल करके, सामान्य वॉइस अनुरोधों को ऐप्लिकेशन की सुविधाओं तक तेज़ी से पहुंचाया जा सकता है.

ऑर्डर पूरे किए गए

जब कोई उपयोगकर्ता अनुरोध करता है, तो shortcuts.xml में ऐप्लिकेशन ऐक्शन ट्रिगर होता है. इसके बाद, आपकी Android गतिविधि को आने वाले Android इंटेंट या डीप लिंक का पता लगाना और उसे हैंडल करना होगा. साथ ही, उपयोगकर्ता को उसकी ज़रूरत के मुताबिक सुविधा देनी होगी. इससे उपयोगकर्ता को आवाज़ से कंट्रोल करने की सुविधा मिलती है. इसमें उपयोगकर्ता की क्वेरी के जवाब में, Assistant आपके ऐप्लिकेशन को चालू करती है.

3. डेवलपमेंट एनवायरमेंट तैयार करना

इस कोडलैब में, Android के लिए Fitness सैंपल ऐप्लिकेशन का इस्तेमाल किया गया है. इस ऐप्लिकेशन की मदद से, उपयोगकर्ता कसरत के लिए टाइमर शुरू और बंद कर सकते हैं. साथ ही, कसरत की रूटीन के बारे में आंकड़े देख सकते हैं.

अपनी बेस फ़ाइलें डाउनलोड करना

इस कोडलैब के लिए बेस फ़ाइलें पाने के लिए, GitHub रिपॉज़िटरी को क्लोन करने के लिए, यह कमांड चलाएं:

git clone --branch codelab-start https://github.com/actions-on-google/appactions-fitness-kotlin.git

रिपॉज़िटरी को क्लोन करने के बाद, उसे Android Studio में खोलें:

  1. Android Studio में आपका स्वागत है डायलॉग बॉक्स में, प्रोजेक्ट इंपोर्ट करें पर क्लिक करें.
  2. वह फ़ोल्डर ढूंढें और चुनें जहां आपने रेपो को क्लोन किया था.

Android ऐप्लिकेशन का आईडी अपडेट करना

ऐप्लिकेशन के आईडी को अपडेट करने से, आपके टेस्ट डिवाइस पर ऐप्लिकेशन की खास तौर पर पहचान होती है. साथ ही, अगर ऐप्लिकेशन को Play Console पर अपलोड किया जाता है, तो "डुप्लीकेट पैकेज का नाम" वाली गड़बड़ी नहीं होती है. ऐप्लिकेशन आईडी अपडेट करने के लिए, app/build.gradle खोलें:

android {
...
  defaultConfig {
    applicationId "com.MYUNIQUENAME.android.fitactions"
    ...
  }
}

applicationId फ़ील्ड में मौजूद "MYUNIQUENAME" को बदलकर, अपनी पसंद का कोई यूनीक नाम डालें.

अपने डिवाइस पर ऐप्लिकेशन आज़माना

ऐप्लिकेशन के कोड में आगे बदलाव करने से पहले, यह जानना ज़रूरी है कि सैंपल ऐप्लिकेशन क्या-क्या कर सकता है. अपने डेवलपमेंट एनवायरमेंट में ऐप्लिकेशन की जांच करने के लिए, यह तरीका अपनाएं:

  1. अपने वर्चुअल या फ़िज़िकल Android टेस्ट डिवाइस को खोलना.
  2. पुष्टि करना कि Assistant ऐप्लिकेशन काम कर रहा है.
  3. अपने डिवाइस पर सैंपल ऐप्लिकेशन को डिप्लॉय और चलाने के लिए, Android Studio का इस्तेमाल करना.

अपने ऐप्लिकेशन को टेस्ट करने के लिए, यह तरीका अपनाएं:

  1. Android Studio में, चलाएं > ऐप्लिकेशन चलाएं को चुनें या टूलबार में चलाएंacabcb8f8634af20.png पर क्लिक करें.
  2. वर्चुअल डिवाइस का इस्तेमाल करने पर, Select Deployment Target डायलॉग बॉक्स में जाकर, कोई वर्चुअल डिवाइस चुनें और OK पर क्लिक करें. सुझाया गया ओएस वर्शन Android 8 (एपीआई लेवल 26) या इसके बाद का है. हालांकि, कार्रवाइयां Android 5 (एपीआई लेवल 21) या इसके बाद के वर्शन वाले डिवाइसों पर भी काम करती हैं.
  3. ऐप्लिकेशन खोलने के बाद, होम बटन को दबाकर रखें, ताकि Assistant को सेट अप किया जा सके. इसके बाद, पुष्टि करें कि Assistant काम कर रही है. अगर आपने पहले से साइन इन नहीं किया है, तो Assistant में साइन इन करें.
  4. ऐप्लिकेशन को फिर से खोलें.

फ़िट ऐक्शन ऐप्लिकेशन खुला हुआ फ़ोन, जिसमें कसरत के आंकड़े दिख रहे हैं.

दूसरी इमेज. Fit Actions का सैंपल ऐप्लिकेशन, जिसमें कसरत के आंकड़े दिखाए गए हैं.

ऐप्लिकेशन को कुछ समय के लिए एक्सप्लोर करें, ताकि आपको पता चल सके कि यह क्या-क्या कर सकता है. 'चलाएं' आइकॉन पर टैप करने से, कसरत का टाइमर शुरू हो जाता है. इसके बाद, X आइकॉन पर टैप करने से टाइमर बंद हो जाता है. ये वे टास्क हैं जिन्हें ऐप्लिकेशन कार्रवाइयों की मदद से, आवाज़ से कंट्रोल किया जा सकता है.

Google Assistant प्लगिन इंस्टॉल करना

Google Assistant प्लगिन की मदद से, टेस्ट डिवाइस पर ऐप्लिकेशन कार्रवाइयों को टेस्ट किया जा सकता है. इसे Android Studio में जोड़ने के लिए, यह तरीका अपनाएं:

  1. फ़ाइल > सेटिंग पर जाएं (macOS पर Android Studio > प्राथमिकताएं).
  2. Plugins सेक्शन में, Marketplace पर जाएँ और "Google Assistant" खोजें.
  3. टूल इंस्टॉल करें और Android Studio को फिर से चालू करें.

4. कसरत शुरू करने की बीआईआई सुविधा जोड़ना

actions.intent.START_EXERCISE बीआईआई की मदद से, लोग अपनी आवाज़ का इस्तेमाल करके कोई ऐप्लिकेशन खोल सकते हैं और कसरत शुरू कर सकते हैं. इस चरण में, इस बीआईआई के लिए एक सुविधा लागू की जाती है. इससे उपयोगकर्ता, Assistant से Fitness ऐप्लिकेशन में रनिंग ट्रैक करने की सुविधा शुरू करने के लिए कह सकते हैं.

क्षमता को परिभाषित करना

Assistant, capability में तय किए गए shortcuts.xml एलिमेंट का इस्तेमाल करके, बोले गए निर्देशों को प्रोसेस करती है. इसके लिए, यह तरीका अपनाती है:

  1. Assistant, उपयोगकर्ता की आवाज़ वाली क्वेरी को आपके ऐप्लिकेशन की सुविधाओं में तय किए गए बीआईआई से मैच करती है.
  2. Assistant, क्वेरी से वैल्यू निकालकर BII पैरामीटर में डालता है. हर पैरामीटर को जनरेट किए गए Intent से जुड़े Bundle में जोड़ा जाता है.
  3. Assistant, ऐप्लिकेशन लॉन्च करने के लिए Intent का इस्तेमाल करता है. इससे ऐप्लिकेशन को बंडल किए गए पैरामीटर का ऐक्सेस मिलता है.

START_EXERCISE बीआईआई, exercise.name बीआईआई पैरामीटर के साथ काम करता है. इस पैरामीटर का इस्तेमाल करके, उपयोगकर्ताओं को यह तय करने की अनुमति दी जाएगी कि उन्हें ऐप्लिकेशन में किस तरह की कसरत को ट्रैक करना है.

अपने ऐप्लिकेशन में START_EXERCISE BII जोड़ें. इसके लिए, app/src/main/res/xml सैंपल प्रोजेक्ट डायरेक्ट्री में मौजूद shortcuts.xml में यह capability जोड़ें:

<!-- shortcuts.xml -->

<capability android:name="actions.intent.START_EXERCISE">
  <intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
    android:targetClass="com.devrel.android.fitactions.FitMainActivity">
    <parameter
      android:name="exercise.name"
      android:key="exerciseType"/>
  </intent>
</capability>

PUT_YOUR_APPLICATION_ID_HERE की जगह, पिछले चरण में तय किया गया यूनीक applicationId डालें.

ऊपर दिए गए एक्सएमएल का सैंपल:

  • यह START_EXERCISE BII के लिए किसी सुविधा का एलान करता है.
  • यह Android intent के बारे में बताता है, जिसे Assistant ऐप्लिकेशन लॉन्च करने के लिए जनरेट करती है:
    • targetPackage और targetClass एट्रिब्यूट से, डेटा पाने वाली गतिविधि के बारे में पता चलता है.
    • parameter एट्रिब्यूट, exercise.name BII पैरामीटर को गतिविधि से मिले Bundle एक्स्ट्रा में मौजूद exerciseType से मैप करता है.

इनलाइन इन्वेंट्री की मदद से, BII पैरामीटर मैनेज करना

BII पैरामीटर, Assistant के उपयोगकर्ता की क्वेरी से निकाले गए एलिमेंट को दिखाते हैं. उदाहरण के लिए, जब कोई उपयोगकर्ता "Ok Google, ExampleApp पर दौड़ना शुरू करो" कहता है, तो Assistant, exercise.name schema.org BII पैरामीटर में "दौड़ना" एक्सट्रैक्ट करती है. कुछ बीआईआई के लिए, Assistant को यह निर्देश दिया जा सकता है कि वह बीआईआई पैरामीटर को आपके ऐप्लिकेशन के लिए ज़रूरी आइडेंटिफ़ायर के सेट से मैच करे.

इसके लिए, इनलाइन इन्वेंट्री एलिमेंट को बीआईआई पैरामीटर से बाइंड करें. इनलाइन इन्वेंट्री, बीआईआई पैरामीटर की उन वैल्यू का सेट होती है जो काम करती हैं. जैसे, "दौड़ना", "पैदल चलना", और "जॉगिंग करना". साथ ही, इसमें उनसे जुड़े शॉर्टकट आईडी भी शामिल होते हैं. जैसे, EXERCISE_RUN. इन्वेंट्री बाइंडिंग की इस सुविधा की मदद से, Assistant, मैच करने वाले पैरामीटर के लिए शॉर्टकट आईडी को आपकी फ़ुलफ़िलमेंट गतिविधि में पास कर सकती है. ऐसा, क्वेरी की रॉ वैल्यू के बजाय किया जाता है.

exercise.name जैसे कुछ BII पैरामीटर के लिए, इनलाइन इन्वेंट्री की ज़रूरत होती है. इस पैरामीटर को हैंडल करने के लिए, shortcuts.xml में ये इन्वेंट्री shortcut एलिमेंट जोड़ें:

<!-- shortcuts.xml -->

<shortcuts>
  <shortcut
    android:shortcutId="running"
    android:shortcutShortLabel="@string/activity_running">
    <capability-binding android:key="actions.intent.START_EXERCISE">
      <parameter-binding
        android:key="exercise.name"
        android:value="@array/runningSynonyms"/>
    </capability-binding>
  </shortcut>

  <shortcut
    android:shortcutId="walking"
    android:shortcutShortLabel="@string/activity_walking">
    <capability-binding android:key="actions.intent.START_EXERCISE">
      <parameter-binding
        android:key="exercise.name"
        android:value="@array/walkingSynonyms"/>
    </capability-binding>
  </shortcut>

  <shortcut
    android:shortcutId="cycling"
    android:shortcutShortLabel="@string/activity_cycling">
    <capability-binding android:key="actions.intent.START_EXERCISE">
      <parameter-binding
        android:key="exercise.name"
        android:value="@array/cyclingSynonyms"/>
    </capability-binding>
  </shortcut>

  <capability> ... </capability>
</shortcuts>

ऊपर दिए गए कोड में, आपने तीन शॉर्टकट तय किए हैं. ये शॉर्टकट, ऐप्लिकेशन में उपलब्ध कसरत के टाइप के लिए इनलाइन इन्वेंट्री दिखाते हैं: दौड़ना, चलना, और साइकल चलाना. हर शॉर्टकट, सुविधा से इन तरीकों से जुड़ा होता है:

  • हर capability-binding एलिमेंट का android:key एट्रिब्यूट, क्षमता के लिए तय किए गए एक ही START_EXCERCISE BII को दिखाता है.
  • हर शॉर्टकट का parameter-binding एलिमेंट, exercise.name BII पैरामीटर के बारे में बताता है.

इनलाइन इन्वेंट्री के समानार्थी शब्द जोड़ना

ऊपर दिए गए इन्वेंट्री शॉर्टकट में मौजूद parameter-binding एलिमेंट के android:value एट्रिब्यूट, हर इन्वेंट्री एलिमेंट के लिए समानार्थी शब्दों के ऐरे रिसॉर्स को दिखाते हैं. समानार्थी शब्दों की मदद से, किसी एलिमेंट टाइप के अलग-अलग वर्शन बनाए जा सकते हैं. जैसे, "run", "jog", और "sprint" का इस्तेमाल एक ही shortcutId के लिए किया जा सकता है. प्रोजेक्ट के array.xml संसाधन में, समानार्थी शब्दों की ये एंट्री जोड़ें:

<!-- array.xml -->
<array name="runningSynonyms">
  <item>Run</item>
  <item>Jog</item>
  <item>Jogging</item>
  <item>Sprint</item>
</array>

<array name="walkingSynonyms">
  <item>Walk</item>
  <item>Hike</item>
  <item>Hiking</item>
</array>

<array name="cyclingSynonyms">
  <item>Biking</item>
  <item>Riding</item>
  <item>Pedaling</item>
</array>

Android के इंटेंट पूरे करना

Android इंटेंट, मैसेज भेजने वाले ऑब्जेक्ट होते हैं. Android इनका इस्तेमाल, किसी दूसरे ऐप्लिकेशन से कार्रवाई का अनुरोध करने के लिए करता है. Assistant, उपयोगकर्ताओं की बोलकर की गई क्वेरी को पूरा करती है. इसके लिए, वह ट्रिगर की गई सुविधा में कॉन्फ़िगरेशन की जानकारी से इंटेंट जनरेट करती है. START_EXERCISE सुविधा के लिए इंटेंट पूरे करने के लिए, FitMainActivity टारगेट क्लास को अपडेट करें, ताकि आने वाले इंटेंट और BII पैरामीटर को हैंडल किया जा सके.

सबसे पहले, Intent.handleIntent फ़ंक्शन की जगह यह कोड डालें:

//FitMainActivity.kt

private fun Intent.handleIntent() {
  when (action) {
    // When the BII is matched, Intent.Action_VIEW will be used
    Intent.ACTION_VIEW -> handleIntent(data)
    // Otherwise start the app as you would normally do.
    else -> showDefaultView()
  }
}

इसके बाद, क्लास में यह कोड जोड़कर एक नया handleIntent फ़ंक्शन जोड़ें:

//FitMainActivity.kt

/**
 * Use extras provided by the intent to handle the different BIIs
 */

private fun handleIntent(data: Uri?) {
  // path is normally used to indicate which view should be displayed
  // i.e https://fit-actions.firebaseapp.com/start?exerciseType="Running" -> path = "start"
  var actionHandled = true

  val startExercise = intent?.extras?.getString(START_EXERCISE)
  // Add stopExercise variable here

  if (startExercise != null){
    val type = FitActivity.Type.find(startExercise)
    val arguments = Bundle().apply {
      putSerializable(FitTrackingFragment.PARAM_TYPE, type)
    }
    updateView(FitTrackingFragment::class.java, arguments)
  } // Add conditional for stopExercise
  else{
   // path is not supported or invalid, start normal flow.
   showDefaultView()

   // Unknown or invalid action
   actionHandled = false
  }
  notifyActionSuccess(actionHandled)
}

ऊपर दिए गए Intent.handleIntent फ़ंक्शन में, जब ACTION_VIEW ट्रिगर होता है, तब ऐप्लिकेशन ऐक्शन इंटेंट का डेटा handleIntent फ़ंक्शन को पास किया जाता है. START_EXERCISE इंटेंट में बंडल किए गए BII पैरामीटर, intent?.extras?.getString(START_EXERCISE) के ज़रिए ऐक्सेस किए जाते हैं. फ़ंक्शन का बाकी हिस्सा, चुने गए startExercise फ़िटनेस टाइप को दिखाने के लिए FitTrackingFragment को अपडेट करता है.

ऐप्लिकेशन की कार्रवाई की जांच करना

ऐप्लिकेशन कार्रवाइयों को डेवलप करने के दौरान, Google Assistant प्लगिन का इस्तेमाल करके, टेस्ट डिवाइस पर अपनी कार्रवाइयों की झलक देखी जा सकती है. इस प्लगिन का इस्तेमाल करके, किसी कार्रवाई के इंटेंट पैरामीटर की वैल्यू में बदलाव किया जा सकता है. इससे यह टेस्ट किया जा सकता है कि कोई उपयोगकर्ता, Assistant से आपके ऐप्लिकेशन के लिए अलग-अलग तरीके से अनुरोध कर सकता है.

प्लगिन की मदद से, ऐप्लिकेशन ऐक्शन की जांच करने के लिए, यह तरीका अपनाएं:

  1. Android Studio में अपना ऐप्लिकेशन चलाने के लिए, Run > Run App चुनें या सबसे ऊपर मौजूद टूलबार पर Run आइकॉन पर क्लिक करें.
  2. टूल > ऐप्लिकेशन कार्रवाइयां > Google Assistant > ऐप्लिकेशन कार्रवाइयों की जांच करने वाला टूल पर जाएं.
  3. झलक बनाएं पर क्लिक करें. अगर आपसे कहा जाए, तो ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयों की नीतियों और सेवा की शर्तों को पढ़ें और उन्हें स्वीकार करें.
  4. actions.intent.START_EXERCISE बिल्ट-इन इंटेंट चुनें.
  5. व्यायाम बॉक्स में, डिफ़ॉल्ट दौड़ने की वैल्यू रहने दें.
  6. ऐप्लिकेशन की कार्रवाई चलाएं पर क्लिक करें. पुष्टि करें कि Assistant, ऐप्लिकेशन के एक्सरसाइज़ टाइमर में डीप लिंक करता है और टाइमर ने रनिंग टाइप वर्कआउट शुरू कर दिया है.

आपने START_EXERCISE बीआईआई की मदद से, ऐप्लिकेशन में होने वाली पहली कार्रवाइयां लागू की हैं. बधाई हो! इसके बाद, हम उपयोगकर्ताओं को आपके ऐप्लिकेशन में चल रही कसरत को रोकने की सुविधा देंगे.

5. Stop Exercise BII सुविधा जोड़ना

actions.intent.STOP_EXERCISE BII की मदद से, उपयोगकर्ता कसरत का सेशन बंद कर सकते हैं. इसके लिए, उन्हें "Ok Google, ExampleApp पर मेरी दौड़ बंद करो." जैसे निर्देश देने होंगे. Fitness ऐप्लिकेशन में इस BII को लागू करने के लिए, capability में दूसरा shortcuts.xml जोड़ें:

<!-- shortcuts.xml -->

<capability android:name="actions.intent.STOP_EXERCISE">
  <intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
    android:targetClass="com.devrel.android.fitactions.FitMainActivity">
    <!-- Eg. name = "Running" -->
    <parameter
        android:name="exercise.name"
        android:key="stopExercise"/>
  </intent>
</capability>

PUT_YOUR_APPLICATION_ID_HERE की जगह अपना यूनीक applicationId डालें.

इनलाइन इन्वेंट्री की मदद से, BII पैरामीटर मैनेज करना

इस BII में, START_EXERCISE BII की तरह ही exercise.name पैरामीटर काम करता है. इससे उपयोगकर्ता यह तय कर पाते हैं कि उन्हें कौनसी चालू कसरत बंद करनी है. इसे चालू करने के लिए, shortcuts.xml में इन्वेंट्री शॉर्टकट एलिमेंट का दूसरा सेट जोड़ें:

<!-- shortcuts.xml -->

<shortcut
  android:shortcutId="running"
  android:shortcutShortLabel="@string/activity_running">
  <capability-binding android:key="actions.intent.STOP_EXERCISE">
      <parameter-binding
          android:key="exercise.name"
          android:value="@array/runningSynonyms"/>
  </capability-binding>
</shortcut>

<shortcut
  android:shortcutId="walking"
  android:shortcutShortLabel="@string/activity_walking">
  <capability-binding android:key="actions.intent.STOP_EXERCISE">
      <parameter-binding
          android:key="exercise.name"
          android:value="@array/walkingSynonyms"/>
  </capability-binding>
</shortcut>

<shortcut
  android:shortcutId="cycling"
  android:shortcutShortLabel="@string/activity_cycling">
  <capability-binding android:key="actions.intent.STOP_EXERCISE">
      <parameter-binding
          android:key="exercise.name"
          android:value="@array/cyclingSynonyms"/>
  </capability-binding>
</shortcut>

Android के इंटेंट पूरे करना

FitMainActivity क्लास को अपडेट करके, ऐप्लिकेशन को STOP_EXERCISE Android इंटेंट मैनेज करने की अनुमति दें. सबसे पहले, handleIntent फ़ंक्शन में एक वैरिएबल जोड़ें, ताकि STOP_EXERCISE इंटेंट डेटा को सेव किया जा सके:

// FitMainActivity.kt

private fun handleIntent(data: Uri?) {
  val stopExercise = intent?.extras?.getString(STOP_EXERCISE)
  //...
}

इसके बाद, handleIntent फ़ंक्शन के शर्त वाले लॉजिक को अपडेट करें, ताकि STOP_EXERCISE इंटेंट को हैंडल किया जा सके:

// FitMainActivity.kt

private fun handleIntent(data: Uri?) {
  //...
  if (startExercise != null){
    val type = FitActivity.Type.find(startExercise)
    val arguments = Bundle().apply {
      putSerializable(FitTrackingFragment.PARAM_TYPE, type)
    }
    updateView(FitTrackingFragment::class.java, arguments)
  } // Add conditional for stopExercise
  <strong>
  } else if(stopExercise != null){
    // Stop the tracking service if any and return to home screen.
    stopService(Intent(this, FitTrackingService::class.java))
    updateView(FitStatsFragment::class.java)
  }
  </strong>
  //...
}

ऊपर दिए गए कोड में, आपने handleIntent फ़ंक्शन को अपडेट किया है, ताकि आने वाले Android इंटेंट में STOP_EXERCISE BII की जांच की जा सके. अगर ऐसा कोई टाइमर मिलता है, तो फ़ंक्शन चालू टाइमर को बंद कर देता है और उपयोगकर्ता को होम स्क्रीन पर वापस ले जाता है.

ऐप्लिकेशन की कार्रवाई की जांच करना

Google Assistant प्लगिन का इस्तेमाल करके, ऐप्लिकेशन ऐक्शन की जांच करने के लिए यह तरीका अपनाएं:

  1. Android Studio में अपना ऐप्लिकेशन चलाने के लिए, Run > Run App चुनें या सबसे ऊपर मौजूद टूलबार पर Run आइकॉन पर क्लिक करें.
  2. ऐप्लिकेशन में, "दौड़ने" की नई कसरत शुरू करें.
  3. Android Studio में प्लगिन खोलें: Tools > App Actions > Google Assistant > App Actions Test Tool पर जाएं.
  4. झलक बनाएं पर क्लिक करें.
  5. actions.intent.STOP_EXERCISE बिल्ट-इन इंटेंट चुनें.
  6. व्यायाम बॉक्स में, डिफ़ॉल्ट दौड़ने की वैल्यू रहने दें.
  7. ऐप्लिकेशन की कार्रवाई चलाएं पर क्लिक करें. पुष्टि करें कि Assistant ने कसरत बंद कर दी है और आपको होम स्क्रीन पर वापस ले गई है.

6. अगले चरण

बधाई हो!

अब आपको पता चल गया है कि Assistant के इंटेंट का इस्तेमाल करके, Android ऐप्लिकेशन में आवाज़ से कंट्रोल करने की सुविधा कैसे चालू की जाती है. इस कोडलैब में, आपने इनके बारे में सीखा:

  • Assistant का इस्तेमाल करके, उपयोगकर्ताओं को ऐप्लिकेशन की खास सुविधाओं के बारे में ज़्यादा जानकारी देने का तरीका.
  • इनलाइन इन्वेंट्री का इस्तेमाल कैसे करें.
  • Google Assistant प्लगिन का इस्तेमाल करके, बीआईआई की जांच करने का तरीका.

आगे क्या करना है

यहां से, अपने फ़िटनेस ऐप्लिकेशन में और सुधार किए जा सकते हैं. पूरे प्रोजेक्ट का रेफ़रंस देखने के लिए, GitHub पर main branch देखें.

ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयों की मदद से, इस ऐप्लिकेशन को बेहतर बनाने के बारे में ज़्यादा जानने के लिए, यहां कुछ सुझाव दिए गए हैं:

Actions on Google का इस्तेमाल जारी रखने के लिए, इन संसाधनों को देखें:

हमारी नई घोषणाओं के बारे में जानने के लिए, हमें Twitter पर @ActionsOnGoogle पर फ़ॉलो करें. साथ ही, आपने जो बनाया है उसे शेयर करने के लिए, #appactions पर ट्वीट करें!

राय जानने के लिए सर्वे

आखिर में, इस कोडलैब के बारे में अपने अनुभव के बारे में सुझाव/राय देने या शिकायत करने के लिए, कृपया यह सर्वे पूरा करें.