การควบคุมด้วยเสียงช่วยให้ผู้ขับขี่ทำงานต่างๆ ได้โดยไม่ต้องละมือจากพวงมาลัยหรือละสายตาจากท้องถนน การดำเนินการของแอปสำหรับแอปในรถยนต์ช่วยให้ผู้ขับขี่ ใช้ Gemini หรือ Google Assistant เพื่อควบคุมแอป Android ในระบบสาระบันเทิงได้โดย พูดว่า "Ok Google หาที่จอดรถริมถนนใน ExampleApp" เป็นต้น
การดำเนินการของแอป ทำงานร่วมกับแอปในรถยนต์ของจุดที่น่าสนใจ (POI) คู่มือนี้ครอบคลุมข้อกำหนดและข้อจำกัดเฉพาะสำหรับการผสานรวมการดำเนินการของแอปเข้ากับแอป POI
วิธีการทำงาน
การดำเนินการของแอปจะขยายฟังก์ชันการทำงานในแอปไปยัง Gemini หรือ Google Assistant เพื่อให้ผู้ใช้
เข้าถึงฟีเจอร์ของแอปได้โดยใช้เสียง เมื่อผู้ใช้เรียกใช้การดำเนินการของแอป
Gemini หรือ Google Assistant จะจับคู่คำค้นหากับ Intent ในตัว (BII) ที่ประกาศไว้ใน
ทรัพยากร shortcuts.xml ของแอป และเปิดแอปในหน้าจอที่ขอ
คุณประกาศการรองรับ BII ในแอปโดยใช้องค์ประกอบ capability ของ Android
เมื่อคุณอัปโหลดแอปโดยใช้ Google Play Console ทาง Google จะลงทะเบียนความสามารถที่ประกาศไว้ในแอปและทำให้ผู้ใช้เข้าถึงได้จาก Gemini หรือ Google Assistant
- ผู้ใช้เรียกใช้ Gemini หรือ Google Assistant และส่งคำขอด้วยเสียงสำหรับแอปที่เฉพาะเจาะจง
- Gemini หรือ Google Assistant จะจับคู่คำขอกับโมเดลที่ฝึกไว้ล่วงหน้า (BII) และดึงพารามิเตอร์ที่ BII รองรับ
- ในตัวอย่างนี้ Gemini หรือ Google Assistant จะจับคู่คำค้นหากับ
GET_CHARGING_STATIONBII, แยกพารามิเตอร์สถานที่ตั้ง "SFO" และแปลสถานที่ตั้งเป็น พิกัดทางภูมิศาสตร์ - ระบบจะทริกเกอร์แอปผ่านคำจำกัดความการดำเนินการตามคำสั่งสำหรับ BII นี้
- แอปจะประมวลผลการจำหน่าย โดยแสดงตัวเลือกสถานีชาร์จในระบบสาระบันเทิงของคนขับ
ข้อจำกัด
การใช้งานการดำเนินการของแอปในรถยนต์มีข้อจำกัดดังนี้
ต้องดำเนินการตามการดำเนินการของแอปในรถยนต์โดยใช้ Deep Link ของ Android ดูข้อมูล เกี่ยวกับการดำเนินการตามคำสั่งของ การดำเนินการของแอป ได้ที่ ระบุรายละเอียดการดำเนินการตามคำสั่งสำหรับ Intent ในตัว
การติดตั้งใช้งานในรถยนต์รองรับเฉพาะ BII ต่อไปนี้
- ที่จอดรถ -
GET_PARKING_FACILITY - กำลังชาร์จ -
GET_CHARGING_STATION
- ที่จอดรถ -
ข้อกำหนด
ทำตามขั้นตอนต่อไปนี้เพื่อเตรียมแอปในรถยนต์สำหรับ การดำเนินการของแอป
- ปฏิบัติตามข้อกำหนดทั่วไปของแอป Android สำหรับการดำเนินการของแอป
- รวมทรัพยากร Dependency ของคลังแอปในรถ ดูรายละเอียดได้ที่ การประกาศการขึ้นต่อกัน
กำหนดความตั้งใจและการดำเนินการตามคำสั่งซื้อ
ขั้นตอนแรกในการเปิดใช้เสียงสำหรับแอปในรถยนต์ด้วยการดำเนินการของแอปคือการพิจารณาว่าแอปของคุณรองรับคำสั่งเสียงของผู้ใช้หรือIntentใดบ้าง จากนั้นคุณจะกำหนด การดำเนินการตามคำสั่งสำหรับแต่ละความตั้งใจเพื่อระบุวิธีที่แอปควรตอบสนองต่อคำขอ
แอปในรถยนต์ของคุณรองรับ Intent ใดบ้าง
การดำเนินการของแอปมีรูปแบบเสียงที่ได้รับการฝึกไว้ล่วงหน้าซึ่งเรียกว่า Intent ในตัว (BII) ซึ่งสามารถทำความเข้าใจและตีความคำสั่งเสียงของผู้ใช้เมื่อพูดว่า"Ok Google" หากต้องการตอบคำขอด้วยเสียง คุณเพียงแค่ประกาศต่อ Gemini หรือ Google Assistant ว่าแอปของคุณรองรับ BII ใดบ้าง ตัวอย่างเช่น หากต้องการให้แอปช่วย ค้นหาสถานที่จอดรถ คุณต้องใช้
GET_PARKING_FACILITYBII หรือใช้GET_CHARGING_STATIONBII เพื่อช่วยให้ผู้ใช้ค้นหาสถานีชาร์จรถยนต์ไฟฟ้าได้แอปของคุณควรตอบสนองแต่ละความตั้งใจอย่างไร
แอปจะทำตามคำขอด้วยเสียงโดยการเปิดแอปเองไปยังหน้าจอที่เหมาะสม การดำเนินการของแอปจะให้ Fulfillment ของคุณด้วยพารามิเตอร์ที่ดึงมาจากคำขอของผู้ใช้ ซึ่งช่วยให้คุณปรับแต่งการตอบกลับให้ตรงกับความต้องการของผู้ใช้ได้
ผสานรวมการดำเนินการของแอป
หลังจากกำหนดกลยุทธ์การดำเนินการตามคำสั่งแล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้เสียงในแอปในรถยนต์
เปิดกิจกรรมหลัก
AndroidManifest.xmlแล้วประกาศการรองรับทางลัดของ Android คุณใช้capabilityองค์ประกอบทางลัดเพื่อประกาศต่อ Gemini หรือ Google Assistant ถึง BII ที่แอปของคุณรองรับ ดูข้อมูลเพิ่มเติมได้ที่ เพิ่มความสามารถ<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />จากนั้นเพิ่มองค์ประกอบ
<intent-filter>ลงในAndroidManifest.xmlซึ่งจะช่วยให้ Gemini หรือ Google Assistant ใช้ Deep Link เพื่อเชื่อมต่อกับเนื้อหาของแอปได้สำหรับการดำเนินการตามคำสั่งของ Android Auto
<intent-filter>จะเหมือนกับ แอปบนอุปกรณ์เคลื่อนที่สำหรับ Android Automotive OS เซสชัน
CarAppServiceของแอปจะทริกเกอร์ Gemini หรือ Google Assistant หากต้องการอนุญาตให้เซสชันทริกเกอร์ Deep Link ให้ระบุ<intent-filter>ในองค์ประกอบ<activity>ของAndroidManifest.xml
<!-- AndroidManifest.xml --> <activity ... android:name="androidx.car.app.activity.CarAppActivity"> ... <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="YOUR_SCHEME" android:host="YOUR_HOST" /> </intent-filter> </activity>หากยังไม่มีไฟล์
shortcuts.xmlในไดเรกทอรีres/xmlของแอป ให้สร้างไฟล์ใหม่ ดูข้อมูลเกี่ยวกับวิธีที่การดำเนินการของแอปใช้ทางลัด Android ได้ที่สร้าง shortcuts.xmlใน
shortcuts.xmlให้ใช้capabilityสำหรับ BII ที่เลือก จากนั้น เพิ่ม<intent>ที่ซ้อนกันเพื่อกำหนดการดำเนินการตามคำสั่งของแอป<!-- shortcuts.xml --> <?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <capability android:name="actions.intent.GET_PARKING_FACILITY"> <intent> <url-template android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}"> <!-- Facility name, e.g. "Googleplex" --> <parameter android:name="parkingFacility.name" android:key="name"/> <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" --> <parameter android:name="parkingFacility.address" android:key="address"/> <!-- Disambiguate the type of service, e.g. "valet" --> <parameter android:name="parkingFacility.disambiguatingDescription" android:key="disambiguatingDescription"/> <!-- Latitude, e.g. "37.3861" --> <parameter android:name="parkingFacility.geo.latitude" android:key="latitude"/> <!-- Longitude, e.g. "-122.084" --> <parameter android:name="parkingFacility.geo.longitude" android:key="longitude"/> </intent> </capability> </shortcuts>สุดท้าย ให้อัปเดตตรรกะ
Session()ของแอปในรถยนต์เพื่อจัดการการดำเนินการตามคำสั่งของ App Actions ที่เข้ามา ตัวอย่างต่อไปนี้แสดงการจัดการ Intent สำหรับSession.onCreateScreen()และSession.onNewIntent()onCreateScreen()
Kotlin
@Override fun onCreateScreen(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public Screen onCreateScreen(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
onNewIntent()
Kotlin
@Override fun onNewIntent(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public void onNewIntent(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
ดูตัวอย่าง ทดสอบ และเผยแพร่แอป
การดำเนินการของแอปมีเครื่องมือสำหรับแสดงตัวอย่างและทดสอบแอปของคุณ โปรดไปที่ภาพรวมของการดำเนินการของแอป เพื่อดูข้อมูลเกี่ยวกับเครื่องมือนี้ และดูรายละเอียดเกี่ยวกับวิธีเผยแพร่แอปในรถยนต์ที่เปิดใช้เสียงไปยัง Play Store