การควบคุมด้วยเสียงช่วยให้ผู้ขับขี่ทำงานต่างๆ ได้โดยไม่ต้องละมือ มองพวงมาลัยหรือสายตามองถนน เมื่อใช้การดำเนินการของแอปสำหรับแอปรถยนต์ ผู้ขับขี่จะทำสิ่งต่อไปนี้ได้ ใช้ 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_STATIONBII ดึงข้อมูลพารามิเตอร์ตำแหน่ง "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_FACILITYBII. หรือติดตั้งใช้งานGET_CHARGING_STATIONBII เพื่อช่วยผู้ใช้ค้นหาเครื่องใช้ไฟฟ้า สถานีชาร์จรถแอปควรตอบสนองความตั้งใจแต่ละข้ออย่างไร
แอปของคุณดำเนินการตามคำขอของเสียงได้ด้วยการเปิดตัวแอปเองใน บนหน้าจอ การดำเนินการของแอปจะระบุการดำเนินการตาม Fulfillment ด้วยพารามิเตอร์ที่ดึงมาจาก คำขอของผู้ใช้ ซึ่งจะช่วยให้คุณปรับแต่งการตอบสนองต่อความต้องการของผู้ใช้ได้
ผสานรวมการดำเนินการของแอป
หลังจากกำหนดกลยุทธ์การดำเนินการตามคำสั่งซื้อแล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้ฟีเจอร์เสียง แอปสำหรับรถยนต์
เปิดกิจกรรมหลัก
AndroidManifest.xmlและประกาศการรองรับสำหรับ Android ทางลัด คุณใช้องค์ประกอบทางลัดcapabilityเพื่อประกาศกับ Assistant BII ที่แอปของคุณรองรับ สำหรับข้อมูลเพิ่มเติม โปรดดู เพิ่มความสามารถ<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@x>ml/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.CarAppActi>vity"<; ... int>ent-fil<ter action android:name="android.intent>.action<.VIEW" / category android:name="android.i>ntent.c<ategory.DEFAULT" / category android:name="a>ndroid.<intent.category.BROWSABLE" / data android:scheme="YO>UR_<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" encodin>g<="utf-8"? shortcuts xmlns:android="http://schemas.and>roid<.com/apk/res/android" capability android:name="a>ction<s.inte>nt.GET_<PARKING_FACILITY" intent url-template android:value="YOUR_SCHEME://YOUR_HOST{?name,address,d>isambigu<atingDescription,latitude,longitude}&qu>ot; < !-- Facility name, e.g. "Googleplex" -- parameter and>roid:na<me="parkingFacility.name" android:key="name&quo>t;/ < !-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" -- > para<meter android:name="parkingFacility.addr>ess&quo<t; android:key="address"/ !-- Disambiguate the type of service, e.g. "valet" -- par>ameter < android:name="park>ingFaci<lity.disambiguatingDescription" android:key="disambiguatingDescription">;/ < !-- Latitude, e.g. "37.386>1"< -- parameter android:name="parkingFacility.geo.latitude" andro>id:ke<y=">;la<titude">;</ !->-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