1. ภาพรวม
เมื่อใช้การดำเนินการของแอป คุณจะใช้ Google Assistant เพื่อไปยังฟีเจอร์ต่างๆ ของแอปได้โดยตรงและทํางานให้เสร็จโดยใช้เสียง ในฐานะนักพัฒนาแอป Android คุณสามารถใช้องค์ประกอบด้านความสามารถเพื่อเพิ่มการดำเนินการของแอปได้ ความสามารถช่วยให้ Assistant ทราบว่าฟีเจอร์ใดของแอปรองรับคำขอด้วยเสียงของผู้ใช้ และคุณต้องการให้คำขอเหล่านั้นบรรลุผลอย่างไร
Codelab นี้ครอบคลุมแนวคิดระดับเริ่มต้นในการพัฒนาด้วยการดำเนินการของแอป คุณควรมีประสบการณ์ในการพัฒนาแอป Android และ Android Intent มาก่อน เพื่อปฏิบัติตาม Codelab นี้ หากคุณเพิ่งเริ่มใช้ Android คุณอาจต้องเริ่มต้นใช้งาน Codelab สำหรับพื้นฐานสำหรับนักพัฒนาซอฟต์แวร์ Android
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะเพิ่ม Intent ในตัว (BII) ในตัว 2 รายการในแอปฟิตเนสบน Android ได้ เพื่อให้ผู้ใช้เริ่มและหยุดตัวจับเวลาการออกกำลังกายได้ด้วยเสียงของตน
สิ่งที่คุณจะได้เรียนรู้
คุณจะได้เรียนรู้วิธีใช้ BII จากหมวดหมู่สุขภาพและการออกกำลังกายเพื่อขยาย Assistant ไปยังแอป Android นอกจากนี้ คุณยังจะได้เรียนรู้วิธีใช้ปลั๊กอิน Google Assistant สำหรับ Android Studio เพื่อทดสอบ BII ด้วย
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการต่อ โปรดตรวจสอบว่าคุณมีเครื่องมือต่อไปนี้ในสภาพแวดล้อมของคุณ
- เทอร์มินัลสำหรับเรียกใช้คำสั่ง Shell ที่มีการติดตั้ง git
- Android Studio เวอร์ชันล่าสุด
- บัญชี Google ที่มีสิทธิ์เข้าถึง [Google Play Console][]
- อุปกรณ์ Android จริงหรือเสมือนที่มีการเข้าถึงอินเทอร์เน็ตไปยัง Play Store
ก่อนดำเนินการต่อ ให้ตรวจสอบว่าบัญชี Google เดียวกันลงชื่อเข้าใช้ Android Studio และแอป Google ในอุปกรณ์ทดสอบ
2. ทำความเข้าใจวิธีการทำงาน
การดำเนินการของแอปจะเชื่อมต่อผู้ใช้จาก Google Assistant กับแอป Android วิธีการทำงาน
เมื่อผู้ใช้ขอให้ Assistant ทํางานโดยใช้แอปของคุณ Assistant จะจับคู่คำค้นหาของผู้ใช้กับการดำเนินการของแอป capability
ที่กำหนดไว้ในทรัพยากร XML ของ shortcuts.xml
ของแอป
รูปที่ 1 แผนภาพกระบวนการที่สาธิตวิธีที่ Assistant ประมวลผลคำถามด้วยเสียงของการดำเนินการของแอป
องค์ประกอบความสามารถแต่ละรายการจะกำหนดสิ่งต่อไปนี้
- ความตั้งใจ: คำสั่งเสียง Intent ของการดำเนินการของแอปที่ควรทริกเกอร์ความสามารถ
- การดำเนินการตามคำสั่งซื้ออย่างน้อย 1 รายการ: Intent ของ Android หรือ Deep Link ที่ Assistant สร้างขึ้นเพื่อเปิดแอปและดำเนินการตามคำขอด้วยเสียงของผู้ใช้ คำจำกัดความของ Fulfillment ระบุพารามิเตอร์ที่คาดว่าจะได้รับจากคำค้นหาของผู้ใช้ และวิธีที่ควรเข้ารหัสพารามิเตอร์เหล่านั้นไว้ในวิธีการเปิดใช้งาน
Intent
ใน Natural Language Understanding (NLU) Intent คือกลุ่มวลีของผู้ใช้ที่มีความหมายคล้ายกัน Google ก็มีระบบ "ในตัว" หลายสิบรายการ Intent (BII) ที่ครอบคลุมคำขอหลากหลายประเภทที่ใช้ได้กับการดำเนินการของแอป ตัวอย่างเช่น Assistant ได้รับการฝึกให้เชื่อมโยงวลี "สั่งพิซซ่า" หรือ "แสดงเมนูของหวาน" กับ ORDER_MENU_ITEM
BII การดำเนินการของแอปจะช่วยให้คุณใช้ประโยชน์จาก BII เหล่านี้เพื่อขยายคำขอด้วยเสียงที่ใช้บ่อยไปยังฟังก์ชันการทำงานของแอปได้อย่างรวดเร็ว
การดำเนินการตามคำสั่งซื้อ
เมื่อคำขอของผู้ใช้ทริกเกอร์การดำเนินการของแอปใน shortcuts.xml
กิจกรรม Android ของคุณต้องตรวจหาและจัดการ Intent ของ Android หรือ Deep Link ที่เข้ามาใหม่ และมอบฟังก์ชันการทำงานที่ต้องการให้แก่ผู้ใช้ ผลลัพธ์ที่ได้คือประสบการณ์ของผู้ใช้ที่ขับเคลื่อนโดยเสียง ซึ่ง Assistant จะเรียกใช้แอปของคุณตามคำค้นหาของผู้ใช้
3. เตรียมสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
Codelab นี้ใช้แอปตัวอย่างฟิตเนสสำหรับ Android แอปนี้ช่วยให้ผู้ใช้เริ่มและหยุดตัวจับเวลาการออกกำลังกาย และดูสถิติเกี่ยวกับกิจวัตรการออกกำลังกายได้
ดาวน์โหลดไฟล์พื้นฐาน
หากต้องการรับไฟล์ฐานสำหรับ Codelab นี้ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อโคลนที่เก็บ GitHub
git clone --branch codelab-start https://github.com/actions-on-google/appactions-fitness-kotlin.git
เมื่อโคลนที่เก็บแล้ว ให้เปิดที่เก็บใน Android Studio โดยทำดังนี้
- คลิกนำเข้าโปรเจ็กต์ในกล่องโต้ตอบยินดีต้อนรับสู่ Android Studio
- ค้นหาและเลือกโฟลเดอร์ที่คุณโคลนที่เก็บ
อัปเดตรหัสแอปพลิเคชัน Android
การอัปเดตรหัสแอปพลิเคชันของแอปจะระบุแอปบนอุปกรณ์ทดสอบโดยไม่ซ้ำกัน และหลีกเลี่ยงไม่ให้มี "ชื่อแพ็กเกจซ้ำ" หากอัปโหลดแอปไปยัง Play Console หากต้องการอัปเดตรหัสแอปพลิเคชัน ให้เปิด app/build.gradle
:
android {
...
defaultConfig {
applicationId "com.MYUNIQUENAME.android.fitactions"
...
}
}
แทนที่ "MYUNIQUENAME" ในช่อง applicationId
เพื่อนำเสนอข้อมูลเฉพาะสำหรับคุณ
ลองใช้แอปในอุปกรณ์
ก่อนที่จะเปลี่ยนแปลงโค้ดของแอปเพิ่มเติม คุณควรเห็นภาพว่าแอปตัวอย่างทำอะไรได้บ้าง การทดสอบแอปในสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์เกี่ยวข้องกับขั้นตอนเหล่านี้
- การเปิดอุปกรณ์ทดสอบ Android เสมือนจริงหรือจริง
- กำลังยืนยันว่าแอป Assistant ใช้งานได้
- ใช้ Android Studio เพื่อติดตั้งใช้งานและเรียกใช้แอปตัวอย่างในอุปกรณ์
ทำตามขั้นตอนต่อไปนี้เพื่อทดสอบแอป
- ใน Android Studio ให้เลือกเรียกใช้ > เรียกใช้แอป หรือคลิกเรียกใช้ในแถบเครื่องมือ
- หากใช้อุปกรณ์เสมือน ในกล่องโต้ตอบเลือกเป้าหมายการทำให้ใช้งานได้ ให้เลือกอุปกรณ์เสมือนและคลิกตกลง เวอร์ชันระบบปฏิบัติการที่แนะนำคือ Android 8 (API ระดับ 26) ขึ้นไป แต่การดำเนินการจะทำงานในอุปกรณ์ตั้งแต่ Android 5 (API ระดับ 21) ขึ้นไป
- หลังจากเปิดแอป ให้กดปุ่มหน้าแรกค้างไว้เพื่อตั้งค่า Assistant และยืนยันว่าใช้งานได้ ลงชื่อเข้าใช้ Assistant หากยังไม่ได้ลงชื่อเข้าใช้
- เปิดแอปอีกครั้ง
รูปที่ 2 แอปตัวอย่างของ Fit Actions แสดงสถิติการออกกำลังกาย
สำรวจแอปคร่าวๆ เพื่อดูว่าแอปทำอะไรได้บ้าง การแตะไอคอนเรียกใช้จะเป็นการเริ่มตัวจับเวลาการออกกำลังกาย และแตะไอคอน X จากนั้นหยุดตัวจับเวลา คุณจะเปิดใช้การควบคุมด้วยเสียงโดยใช้การดำเนินการของแอปได้ดังต่อไปนี้
ติดตั้งปลั๊กอิน Google Assistant
ปลั๊กอิน Google Assistant ช่วยให้คุณทดสอบการดำเนินการของแอปในอุปกรณ์ทดสอบได้ ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มลงใน Android Studio
- ไปที่ไฟล์ > การตั้งค่า (Android Studio > ค่ากำหนดบน MacOS)
- ในส่วนปลั๊กอิน ให้ไปที่ Marketplace และค้นหา "Google Assistant"
- ติดตั้งเครื่องมือและรีสตาร์ท Android Studio
4. เพิ่มความสามารถ Start Exercise BII
actions.intent.START_EXERCISE
BII ช่วยให้ผู้ใช้เปิดแอปและเริ่มออกกำลังกายได้โดยใช้เสียงของตนเอง ในขั้นตอนนี้ คุณจะใช้ความสามารถสําหรับ BII นี้ ซึ่งจะอนุญาตให้ผู้ใช้ขอให้ Assistant เริ่มวิ่งในแอปฟิตเนส
กำหนดความสามารถ
Assistant ใช้องค์ประกอบ capability
ที่กำหนดไว้ใน shortcuts.xml
เพื่อประมวลผลคำสั่งเสียงโดยทำตามขั้นตอนต่อไปนี้
- Assistant จะจับคู่คำค้นหาเสียงของผู้ใช้กับ BII ที่ระบุไว้ในความสามารถของแอป
- Assistant จะแยกค่าจากคําค้นหาเป็นพารามิเตอร์ BII ระบบจะเพิ่มแต่ละพารามิเตอร์ลงใน
Bundle
ซึ่งแนบกับIntent
ที่สร้างขึ้น - Assistant ใช้
Intent
เพื่อเปิดแอป โดยให้สิทธิ์แอปเข้าถึงพารามิเตอร์ที่อยู่ในแพ็กเกจ
START_EXERCISE
BII รองรับพารามิเตอร์ exercise.name
BII คุณจะใช้พารามิเตอร์นี้เพื่ออนุญาตให้ผู้ใช้ระบุประเภทการออกกำลังกายที่จะติดตามในแอป
เพิ่ม START_EXERCISE
BII ลงในแอปโดยเพิ่ม capability
นี้ลงใน shortcuts.xml
ซึ่งอยู่ในไดเรกทอรีโปรเจ็กต์ตัวอย่าง app/src/main/res/xml
ดังนี้
<!-- 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
ที่ไม่ซ้ำกันซึ่งคุณกำหนดไว้ในขั้นตอนก่อนหน้า
XML ตัวอย่างก่อนหน้านี้
- ประกาศความสามารถสำหรับ
START_EXERCISE
BII - ระบุ
intent
ของ Android ที่ Assistant สร้างขึ้นเพื่อเปิดแอป ดังนี้- แอตทริบิวต์
targetPackage
และtargetClass
จะระบุกิจกรรมการรับ - แอตทริบิวต์
parameter
จะแมปพารามิเตอร์exercise.name
BII กับexerciseType
ในส่วนเพิ่มเติมของBundle
ที่กิจกรรมได้รับ
- แอตทริบิวต์
จัดการพารามิเตอร์ BII ด้วยสินค้าคงคลังในบรรทัด
พารามิเตอร์ BII แสดงองค์ประกอบที่ดึงมาจากคำค้นหาของผู้ใช้ Assistant เช่น เมื่อผู้ใช้พูดว่า "Ok Google เริ่มรันใน ExampleApp" Assistant จะดึงข้อมูลว่า "Run" ลงในพารามิเตอร์ schema.org BII ของ exercise.name
สําหรับ BII บางรายการ คุณจะสั่งให้ Assistant จับคู่พารามิเตอร์ BII กับชุดตัวระบุที่แอปคาดหวังได้
ซึ่งทำได้ด้วยการเชื่อมโยงองค์ประกอบพื้นที่โฆษณาในบรรทัดกับพารามิเตอร์ BII พื้นที่โฆษณาในบรรทัดคือชุดค่าพารามิเตอร์ BII ที่รองรับ เช่น "run" "hike" และ "jog" และรหัสทางลัดที่เกี่ยวข้อง เช่น EXERCISE_RUN
การเชื่อมโยงพื้นที่โฆษณานี้ช่วยให้ Assistant ส่งรหัสทางลัดสำหรับพารามิเตอร์การจับคู่ไปยังกิจกรรมการดำเนินการตามคำสั่งซื้อ แทนค่าการค้นหาดิบ
พารามิเตอร์ BII บางรายการ เช่น exercise.name
ต้องใช้พื้นที่โฆษณาในบรรทัดจึงจะทำงานได้ หากต้องการจัดการพารามิเตอร์นี้ ให้เพิ่มองค์ประกอบ shortcut
ของพื้นที่โฆษณาต่อไปนี้ลงใน shortcuts.xml
<!-- 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>
ในโค้ดก่อนหน้านี้ คุณได้กำหนดทางลัด 3 รายการที่แสดงถึงพื้นที่โฆษณาแบบอินไลน์สำหรับประเภทการออกกำลังกายที่รองรับของแอป ซึ่งได้แก่ การวิ่ง การเดิน และการปั่นจักรยาน แป้นพิมพ์ลัดแต่ละรายการจะเชื่อมโยงกับความสามารถในลักษณะต่อไปนี้
- แอตทริบิวต์
android:key
ขององค์ประกอบcapability-binding
แต่ละรายการอ้างอิงถึงSTART_EXCERCISE
BII เดียวกันที่กำหนดไว้สำหรับความสามารถนี้ - องค์ประกอบ
parameter-binding
ของแป้นพิมพ์ลัดแต่ละรายการไปยังพารามิเตอร์exercise.name
BII
เพิ่มคำพ้องความหมายพื้นที่โฆษณาในบรรทัด
แอตทริบิวต์ android:value
ขององค์ประกอบ parameter-binding
ในทางลัดของพื้นที่โฆษณาก่อนหน้านี้หมายถึงทรัพยากรอาร์เรย์ของคำพ้องความหมายสำหรับองค์ประกอบพื้นที่โฆษณาแต่ละรายการ คำพ้องความหมายทำให้ประเภทขององค์ประกอบหนึ่งๆ ใช้ได้ เช่น "วิ่ง" "วิ่งเหยาะๆ" และ "วิ่ง" เพื่ออ้างอิงถึง 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>
ตอบสนอง Intent ของ Android ที่เข้ามาใหม่
Intent ของ Android คือออบเจ็กต์การรับส่งข้อความที่ Android ใช้เพื่อขอให้ดำเนินการจากแอปอื่น Assistant ตอบสนองความต้องการของผู้ใช้ การค้นหาด้วยเสียงโดยการสร้าง Intent จากรายละเอียดการกำหนดค่าในความสามารถที่ทริกเกอร์ เพื่อให้ Intent สำหรับความสามารถของ START_EXERCISE
เสร็จสมบูรณ์ ให้อัปเดตคลาสเป้าหมาย FitMainActivity
เพื่อจัดการพารามิเตอร์ Intent ขาเข้าและพารามิเตอร์ 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
ระบบจะส่งข้อมูล Intent ของการดำเนินการของแอปไปยังฟังก์ชัน handleIntent
พารามิเตอร์ BII ที่รวมอยู่ใน Intent ของ START_EXERCISE
จะเข้าถึงได้ผ่าน intent?.extras?.getString(START_EXERCISE)
ฟังก์ชันที่เหลือจะอัปเดต FitTrackingFragment
เพื่อแสดงประเภทการออกกำลังกาย startExercise
ที่เลือก
ทดสอบการดำเนินการของแอป
ในระหว่างการพัฒนาการดำเนินการของแอป คุณจะใช้ปลั๊กอิน Google Assistant เพื่อดูตัวอย่างการดำเนินการในอุปกรณ์ทดสอบได้ คุณยังใช้ปลั๊กอินเพื่อปรับค่าพารามิเตอร์ Intent ของการดำเนินการเพื่อทดสอบว่าแอปของคุณจัดการกับวิธีต่างๆ ที่ผู้ใช้อาจใช้วลีคำขอ Assistant สำหรับแอปของคุณได้
หากต้องการทดสอบการดำเนินการของแอปด้วยปลั๊กอิน ให้ทำตามขั้นตอนต่อไปนี้
- เรียกใช้แอปใน Android Studio โดยเลือกเรียกใช้ > เรียกใช้แอปหรือคลิกไอคอนเรียกใช้บนแถบเครื่องมือด้านบน
- ไปที่เครื่องมือ > การดำเนินการของแอป > Google Assistant > เครื่องมือทดสอบการดำเนินการของแอป
- คลิกสร้างพรีวิว หากระบบถาม ให้อ่านและยอมรับนโยบายและข้อกำหนดในการให้บริการของการดำเนินการของแอป
- เลือก Intent ในตัว
actions.intent.START_EXERCISE
- ในช่อง exercise ให้ใช้ค่าเริ่มต้น running
- คลิกเรียกใช้การดำเนินการของแอป ตรวจสอบว่า Deep Link ของ Assistant เข้าสู่ตัวจับเวลาการออกกำลังกายของแอป และตัวจับเวลาได้เริ่มออกกำลังกายประเภทการวิ่งแล้ว
คุณได้ใช้การดําเนินการของแอปครั้งแรกด้วยSTART_EXERCISE
BII ยินดีด้วย ถัดไป เราจะอนุญาตให้ผู้ใช้หยุดการออกกำลังกายที่กำลังดำเนินอยู่ในแอปของคุณ
5. เพิ่มความสามารถ Stop Exercise BII
actions.intent.STOP_EXERCISE
BII อนุญาตให้ผู้ใช้หยุดเซสชันการออกกำลังกายโดยถามคำถามอย่างเช่น "Ok Google หยุดการวิ่งของฉันใน ExampleApp" ใช้งาน BII นี้ในแอปฟิตเนสโดยเพิ่ม capability
รายการที่ 2 ลงใน 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 นี้รองรับพารามิเตอร์ exercise.name
เดียวกับ START_EXERCISE
BII เพื่อให้ผู้ใช้ระบุการออกกำลังกายที่ต้องการสิ้นสุดได้ หากต้องการเปิดใช้ ให้เพิ่มองค์ประกอบทางลัดพื้นที่โฆษณาชุดที่ 2 ลงใน 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>
ตอบสนอง Intent ของ Android ที่เข้ามาใหม่
เปิดใช้แอปเพื่อจัดการ Intent ของ Android STOP_EXERCISE
ที่เข้ามาใหม่โดยการอัปเดตคลาส FitMainActivity
ก่อนอื่นให้เพิ่มตัวแปรลงในฟังก์ชัน handleIntent
เพื่อเก็บข้อมูล Intent STOP_EXERCISE
ดังนี้
// FitMainActivity.kt
private fun handleIntent(data: Uri?) {
val stopExercise = intent?.extras?.getString(STOP_EXERCISE)
//...
}
ถัดไป ให้อัปเดตตรรกะแบบมีเงื่อนไขของฟังก์ชัน handleIntent
เพื่อจัดการ Intent ของ 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
เพื่อตรวจหา STOP_EXERCISE
BII ใน Intent ที่เข้ามาของ Android หากพบ ฟังก์ชันจะหยุดตัวจับเวลาที่ใช้งานอยู่และนำผู้ใช้กลับไปที่หน้าจอหลัก
ทดสอบการดำเนินการของแอป
ทดสอบการดำเนินการของแอปโดยใช้ปลั๊กอิน Google Assistant โดยทำตามขั้นตอนต่อไปนี้
- เรียกใช้แอปใน Android Studio โดยเลือกเรียกใช้ > เรียกใช้แอปหรือคลิกไอคอนเรียกใช้บนแถบเครื่องมือด้านบน
- ในแอป ให้เริ่ม "การวิ่ง" ใหม่ สำหรับการออกกำลังกาย
- เปิดปลั๊กอินใน Android Studio โดยไปที่เครื่องมือ > การดำเนินการของแอป > Google Assistant > เครื่องมือทดสอบการดำเนินการของแอป
- คลิกสร้างพรีวิว
- เลือก Intent ในตัว
actions.intent.STOP_EXERCISE
- ในช่อง exercise ให้ใช้ค่าเริ่มต้น running
- คลิกเรียกใช้การดำเนินการของแอป ยืนยันว่า Assistant หยุดการออกกำลังกายและกลับไปยังหน้าจอหลัก
6. ขั้นตอนถัดไป
ยินดีด้วย
ตอนนี้คุณเข้าใจวิธีเปิดใช้แอป Android ด้วยเสียงโดยใช้ Intent ในตัวของ Assistant แล้ว คุณได้เรียนรู้สิ่งต่อไปนี้ใน Codelab แล้ว
- วิธีช่วยให้ผู้ใช้เจาะลึกข้อมูลของฟีเจอร์ที่เจาะจงของแอปโดยใช้ Assistant
- วิธีใช้พื้นที่โฆษณาแบบอินไลน์
- วิธีทดสอบ BII โดยใช้ปลั๊กอิน Google Assistant
ขั้นตอนถัดไป
จากที่นี่ คุณสามารถลองปรับเกณฑ์การค้นหาเพิ่มเติมในแอปฟิตเนสของคุณได้ หากต้องการอ้างอิงโปรเจ็กต์ที่เสร็จสมบูรณ์แล้ว ให้ดู Branch หลักใน GitHub
ต่อไปนี้คือคำแนะนำบางส่วนสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการขยายแอปนี้ด้วยการดำเนินการของแอป
- โปรดดู Codelab สำหรับการดำเนินการของแอปอื่นๆ ของเรา
- ไปที่ข้อมูลอ้างอิง Intent ในตัวของการดำเนินการของแอปเพื่อดู BII เพิ่มเติมเพื่อขยายแอปของคุณไปยัง Assistant
โปรดสำรวจแหล่งข้อมูลเหล่านี้เพื่อดำเนินการต่อในเส้นทางของ Actions on Google
- developers.google.com/assistant: เว็บไซต์เอกสารประกอบอย่างเป็นทางการสำหรับ Actions on Google
- ดัชนีตัวอย่างการดำเนินการของแอป: แอปและโค้ดตัวอย่างสำหรับสำรวจความสามารถของการดำเนินการของแอป
- Actions on Google GitHub repo: โค้ดและไลบรารีตัวอย่าง
- r/GoogleAssistantDev: ชุมชน Reddit อย่างเป็นทางการสำหรับนักพัฒนาซอฟต์แวร์ที่ทำงานร่วมกับ Google Assistant
ติดตามเราบน Twitter @ActionsOnGoogle เพื่อติดตามประกาศล่าสุดของเรา และทวีตไปที่ #appactions เพื่อแชร์สิ่งที่คุณสร้างขึ้น
แบบสำรวจความคิดเห็น
สุดท้ายนี้ โปรดกรอกแบบสำรวจนี้เพื่อแสดงความคิดเห็นเกี่ยวกับประสบการณ์ในการใช้งาน Codelab นี้