การควบคุมด้วยเสียงช่วยให้ผู้ขับขี่ทำงานต่างๆ ได้โดยไม่ต้องละมือ มองพวงมาลัยหรือสายตามองถนน เมื่อใช้การดำเนินการของแอปสำหรับแอปรถยนต์ ผู้ขับขี่จะทำสิ่งต่อไปนี้ได้ ใช้ Google Assistant เพื่อควบคุมแอป Android ในระบบสาระบันเทิงโดย โดยพูดคำสั่ง เช่น "Ok Google หาที่จอดรถริมถนนใน ExampleApp"
การดำเนินการของแอปใช้ได้กับแอปรถยนต์ในจุดที่น่าสนใจ (POI) คู่มือนี้ครอบคลุมเรื่อง ข้อกำหนดและข้อจำกัดเฉพาะในการผสานรวมการดำเนินการของแอปเข้ากับจุดที่น่าสนใจ แอป
วิธีการทำงาน
การดำเนินการในแอปขยายฟังก์ชันในแอปให้กับ Assistant ทำให้ผู้ใช้ทำสิ่งต่อไปนี้ได้
เข้าถึงฟีเจอร์ของแอปโดยใช้เสียง เมื่อผู้ใช้เรียกใช้การดำเนินการของแอป
Assistant จะจับคู่คำถามกับ Intent ในตัว (BII) ที่ประกาศไว้ใน
shortcuts.xml
และเปิดแอปของคุณในหน้าจอที่ร้องขอ
คุณประกาศการรองรับ BII ในแอปโดยใช้องค์ประกอบ capability
ของ Android
เมื่อคุณอัปโหลดแอปโดยใช้ Google Play Console ทาง Google จะลงทะเบียน
ความสามารถที่ประกาศไว้ในแอปของคุณและช่วยให้ผู้ใช้เข้าถึงได้
จาก Assistant
- ผู้ใช้เรียกใช้ Assistant และส่งคำขอด้วยเสียงสำหรับแอปที่เจาะจง
- Assistant จะจับคู่คำขอกับโมเดลก่อนการฝึก (BII) และการดึงข้อมูล พารามิเตอร์ใดๆ ที่ BII รองรับ
- ในตัวอย่างนี้ Assistant จะจับคู่คำค้นหากับ
GET_CHARGING_STATION
BII ดึงข้อมูลพารามิเตอร์ตำแหน่ง "SFO" และแปลตำแหน่งเป็น พิกัดทางภูมิศาสตร์ - แอปจะทริกเกอร์ผ่านคำจำกัดความของการดำเนินการตามคำสั่งซื้อสำหรับ BII นี้
- แอปประมวลผลการดำเนินการตามคำสั่งซื้อโดยแสดงตัวเลือกสถานีชาร์จใน ระบบสาระบันเทิงของคนขับ
ข้อจำกัด
การใช้งานการดำเนินการของแอปในรถยนต์มีข้อจำกัดต่อไปนี้
การดำเนินการของแอปรถยนต์ต้องดำเนินการโดยใช้ Deep Link ของ Android สำหรับข้อมูล เกี่ยวกับการดำเนินการของแอปให้ที่ ระบุรายละเอียดการดำเนินการตามคำสั่งซื้อสำหรับ Intent ในตัว
การติดตั้งใช้งานรถยนต์รองรับเฉพาะ BII ต่อไปนี้เท่านั้น
- ที่จอดรถ -
GET_PARKING_FACILITY
- กำลังชาร์จ -
GET_CHARGING_STATION
- ที่จอดรถ -
ข้อกำหนด
ทำตามขั้นตอนต่อไปนี้เพื่อเตรียมแอปสำหรับรถยนต์ให้พร้อมใช้งานการดำเนินการของแอป
- ปฏิบัติตามข้อกำหนดทั่วไปของแอป Android สำหรับการดำเนินการของแอป
- รวมทรัพยากร Dependency ของไลบรารีแอปรถยนต์ โปรดดูรายละเอียดที่หัวข้อ การประกาศทรัพยากร Dependency
ระบุความตั้งใจและการดำเนินการตามคำสั่งซื้อ
ขั้นตอนแรกในการเปิดใช้แอปรถยนต์ด้วยเสียงโดยใช้การดำเนินการของแอปคือการกำหนด คำสั่งเสียงหรือความตั้งใจของผู้ใช้ที่แอปของคุณรองรับ จากนั้นคุณจะต้องกำหนด Fulfillment สำหรับ Intent แต่ละรายการเพื่อระบุวิธีที่แอปควรตอบสนองคำขอ
แอปรถยนต์ของคุณรองรับ Intent ใดบ้าง
การดำเนินการของแอปมีรูปแบบเสียงที่ฝึกไว้แล้วล่วงหน้า ซึ่งเรียกว่า Intent ในตัว (BII) ซึ่งสามารถเข้าใจและตีความคำสั่งเสียงของผู้ใช้ได้เมื่อพวกเขาพูดว่า "Ok Google" ในการตอบสนองต่อคำขอด้วยเสียง เพียงประกาศให้ Assistant ทราบ BII ที่แอปของคุณรองรับ เช่น หากต้องการให้แอปช่วย ในการค้นหาสถานที่จอดรถ คุณใช้
GET_PARKING_FACILITY
BII. หรือติดตั้งใช้งานGET_CHARGING_STATION
BII เพื่อช่วยผู้ใช้ค้นหาเครื่องใช้ไฟฟ้า สถานีชาร์จรถแอปควรตอบสนองความตั้งใจแต่ละข้ออย่างไร
แอปของคุณดำเนินการตามคำขอของเสียงได้ด้วยการเปิดตัวแอปเองใน บนหน้าจอ การดำเนินการของแอปจะระบุการดำเนินการตาม Fulfillment ด้วยพารามิเตอร์ที่ดึงมาจาก คำขอของผู้ใช้ ซึ่งจะช่วยให้คุณปรับแต่งการตอบสนองต่อความต้องการของผู้ใช้ได้
ผสานรวมการดำเนินการของแอป
หลังจากกำหนดกลยุทธ์การดำเนินการตามคำสั่งซื้อแล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้ฟีเจอร์เสียง แอปสำหรับรถยนต์
เปิดกิจกรรมหลัก
AndroidManifest.xml
และประกาศการรองรับสำหรับ Android ทางลัด คุณใช้องค์ประกอบทางลัดcapability
เพื่อประกาศกับ Assistant BII ที่แอปของคุณรองรับ สำหรับข้อมูลเพิ่มเติม โปรดดู เพิ่มความสามารถ<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
จากนั้นเพิ่มองค์ประกอบ
<intent-filter>
ลงในAndroidManifest.xml
ช่วงเวลานี้ ช่วยให้ Assistant ใช้ Deep Link เพื่อเชื่อมต่อกับเนื้อหาของแอปได้สำหรับ Fulfillment ของ Android Auto
<intent-filter>
จะเหมือนกับ บนอุปกรณ์เคลื่อนที่สำหรับ Android Automotive OS เซสชัน
CarAppService
ของแอปจะทริกเกอร์ 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 โปรดดูสร้างทางลัด.xmlใน
shortcuts.xml
ให้ใช้capability
สำหรับ BII ที่คุณเลือก ถัดไป เพิ่ม<intent>
ที่ฝังไว้เพื่อกำหนด Fulfillment ของแอป<!-- 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()
ของแอปรถเพื่อจัดการแอปที่เข้ามาใหม่ การตอบสนองในการดำเนินการ ตัวอย่างต่อไปนี้แสดงการจัดการความตั้งใจสำหรับ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