การเลือก VIA ที่ใช้งานอยู่จะกระทำโดย ManageAssistActivity
ใน CarSettings โฟลว์นี้ถูกทริกเกอร์โดยแอป PackageInstaller
ซึ่งเป็นส่วนหนึ่งของส่วนแอปเริ่มต้นของหน้าจอการตั้งค่า
รูปที่ 1 แอพเริ่มต้นบนหน้าจอการตั้งค่า
VIA ที่เลือกจะถูกเปิดเผยต่อระบบด้วยสองวิธี:
- เป็นส่วนหนึ่งของบริการระบบ
RolesManager
- โดย
VoiceInteractionManagerService
ผ่านAssistUtils
API ภายใน
สามารถรับรายชื่อ VIA ของผู้สมัครได้โดยใช้ RolesManager
โดยมีชื่อบทบาท android.app.role.ASSISTANT
การเรียกใช้คำที่นิยม
Android ให้ AlwaysOnHotwordDetector เป็นนามธรรมที่อยู่ด้านบนของฮาร์ดแวร์ DSP นี่เป็นวิธีที่สะดวกในการเชื่อมโยง VoiceInteractionService
กับโมเดลเสียงเพื่อการจดจำเสียงที่เปิดตลอดเวลาโดยใช้พลังงานต่ำ นี่เป็นขั้นตอนการโต้ตอบที่พบบ่อยที่สุดและเป็นที่รู้จัก โดยที่ผู้ใช้ขอโต้ตอบกับแอปพลิเคชันเสียง (VA) เพื่อเริ่มการสนทนาใหม่ เซสชันเสียงที่เริ่มต้นด้วยวิธีนี้จะถูกระบุด้วย SHOW_SOURCE_ASSIST_GESTURE flag
รูปที่ 2 การเรียกใช้คำที่นิยม
ตำนาน. บริการของระบบจะปรากฏเป็นสีฟ้าอ่อน ส่วนประกอบ VIA เป็นสีเขียว
ปตท. กระตุ้น
สิ่งนี้ใช้กับการกดปุ่มฮาร์ดแวร์แบบยาวหรือสั้น ใน AAOS ปตท. ได้รับการจัดการโดย CarInputService ในการใช้งานเริ่มต้น บริการนี้จะจัดการเหตุการณ์อินพุตที่ได้รับผ่าน HAL ของยานพาหนะ และในกรณีเฉพาะของการโต้ตอบด้วยเสียง บริการจะใช้ตรรกะต่อไปนี้กับเหตุการณ์สำคัญ:
- กิจกรรม PTT สั้นๆ (
KeyEvent.KEYCODE_VOICE_ASSIST
) จะถูกส่งไปยังVoiceInteractionManagerService
เพื่อเริ่มเซสชันเสียงใหม่ - กิจกรรม PTT แบบยาวจะถูกส่งต่อไปยังเครื่องรับการฉายภาพ (เช่น Android Auto หรือ CarPlay) ก่อน จากนั้นไปยังอุปกรณ์ที่เชื่อมต่อ Bluetooth และสุดท้ายไปยังแอป VIA ในเครื่อง
เซสชันที่เริ่มใช้โฟลว์นี้จะถูกระบุด้วย SHOW_SOURCE_PUSH_TO_TALK
รูปที่ 3 ปตท. กระตุ้น
หากต้องการรวมปุ่มควบคุมด้วยเสียงด้วยฮาร์ดแวร์เข้ากับ AAOS โปรดดูการรวม อินพุตกุญแจยานยนต์
การเรียกใช้ Tap-to-Talk (หรือปุ่มซอฟต์แวร์)
การทริกเกอร์การโต้ตอบด้วยเสียงจาก UI ของระบบทำได้โดยใช้ AssistUtil นี่คือ API ระบบที่ซ่อนอยู่ซึ่งสามารถใช้งานได้โดยแอประบบที่รวมกลุ่มเท่านั้น เช่น UI ระบบที่เปิดใช้งาน:
- การโต้ตอบกับ
VoiceInteractionManagerService
เพื่อเริ่มเซสชันการควบคุมด้วยเสียง - พิจารณาว่าเป็น VIA ที่เลือกในปัจจุบัน
หากต้องการนำเสนอแอป VIA ที่เลือกแบบไดนามิก UI ระบบสามารถใช้ RoleManager
และติดตามการเปลี่ยนแปลงบนผู้ถือบทบาทสำหรับ ROLE_ASSISTANT
ตัวอย่างของวิธีการใช้ทริกเกอร์ TTT สามารถพบได้ใน CarSystemUI, AssistantButton
รูปที่ 4 ทริกเกอร์แตะเพื่อพูด
ผู้ช่วยเสียงแตะเพื่ออ่าน (TTR)
ในยานยนต์ การแจ้งเตือนที่โพสต์ไปยังศูนย์การแจ้งเตือนที่ระบุว่าเป็นการแจ้งเตือนINBOX
หรือ INBOX_IN_GROUP
(เช่น ข้อความ SMS) จะมีปุ่มดำเนินการเล่น ซึ่งช่วยให้ผู้ใช้มีการแจ้งเตือนที่อ่านออกเสียงโดย VIA ที่เลือก และอาจตอบกลับด้วยเสียงก็ได้ รูปที่ 5 การแจ้งเตือน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้โฟลว์นี้ ดูที่ จัดการคำสั่งการส่งข้อความ
เปิด VIA จากตัวเรียกใช้งานรถยนต์
เช่นเดียวกับแอปอื่นๆ VIA สามารถรวมกิจกรรมตัวเรียกใช้งานอย่างน้อยหนึ่งกิจกรรมไว้ในรายการได้ ขึ้นอยู่กับนักพัฒนาแอปและ OEM ที่ยอมรับที่จะติดตั้งแอปนี้ล่วงหน้าเพื่อตัดสินใจว่ากิจกรรมเหล่านี้จะทำอะไร
สำคัญ. ในยานยนต์ กิจกรรมทั้งหมด รวมถึงกิจกรรมของระบบ อยู่ภายใต้ข้อจำกัด UX ในขณะขับรถ หากประสบการณ์ที่คุณต้องการเปิดใช้งานจากไอคอน Launcher จะต้องพร้อมใช้งานในขณะขับรถ ให้เพิ่มลงในรายการที่อนุญาต (หากคุณเป็น OEM) หรือใส่คำอธิบายประกอบกิจกรรมด้วยข้อมูลเมตา distractionOptimized
สมาธิ สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำในการเบี่ยงเบนความสนใจของผู้ขับขี่
DSP และเสียง HAL
อย่าลืมอ่านหลักเกณฑ์ที่อัปเดตเกี่ยวกับการบันทึกเสียงที่เปิดพร้อมกันตลอดเวลาและ HAL เสียงที่ การบันทึกพร้อมกัน การเข้าถึง API เหล่านี้อาจส่งผลกระทบอย่างมีนัยสำคัญต่อประสิทธิภาพของการตรวจจับคำที่นิยม ตามที่อธิบายไว้ใน การตอบสนองต่อคำที่นิยม
สิทธิ์
ให้สิทธิ์สิทธิ์แก่ระบบ
เนื่องจากผู้ใช้ไม่สามารถให้สิทธิ์พิเศษได้ หาก VIA ต้องการสิทธิ์ดังกล่าว OEM จะต้องโหลด APK ล่วงหน้าในอิมเมจระบบของตน และให้สิทธิ์เหล่านั้นอย่างชัดเจนในรุ่นของตน ดู ขอสิทธิ์
โดยเพิ่มการพึ่งพารายการที่อนุญาตของสิทธิ์ในโปรเจ็กต์ของคุณ:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
เพิ่มไฟล์สิทธิ์อนุญาตรายการสิทธิ์ระบบลงในโฟลเดอร์ yourdata/etc/car
:
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
การอนุญาตล่วงหน้าที่เป็นอันตราย
ตามที่ระบุไว้ใน คำขอสิทธิ์ VIA ต้องได้รับความยินยอมจากผู้ใช้เพื่อเข้าถึงฟังก์ชันบางอย่าง สิทธิ์บางส่วนเหล่านี้ได้รับการ pregranted เป็นค่าเริ่มต้น VoiceInteractionService
(ดู DefaultPermissionGrantPolicy.java
) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์สำหรับตัวจัดการเริ่มต้น โปรดดู ที่สิทธิ์ที่ใช้เฉพาะในตัวจัดการเริ่มต้นเท่านั้น นอกจากนี้ยังสามารถให้สิทธิ์ล่วงหน้าได้โดยใช้ไฟล์คอนฟิกูเรชัน default-permissions.xml
สำหรับรายละเอียดเกี่ยวกับข้อจำกัดเกี่ยวกับการให้สิทธิ์ล่วงหน้า โปรดดูส่วนที่ 9 ใน เอกสารคำจำกัดความความเข้ากันได้ของ Android (CDD)
สำคัญ. ในทุกกรณี เฉพาะ VIA เริ่มต้นเท่านั้นที่จะได้รับสิทธิ์เหล่านี้ล่วงหน้า หากระบบมี VIA ที่โหลดไว้ล่วงหน้ามากกว่าหนึ่งรายการ VIA ที่ไม่ใช่ค่าเริ่มต้นจะต้องขอสิทธิ์ผู้ใช้อย่างชัดเจนโดยเป็นส่วนหนึ่งของการตั้งค่าหรือระหว่างการใช้งานครั้งแรก
การกระจาย (ติดตั้งล่วงหน้าและปรับใช้การอัปเดต)
VIA ที่ติดตั้งไว้ล่วงหน้าจะต้องอยู่ภายใต้ /product/priv-apps
หรือ /vendor/priv-apps
พาร์ติชันและโฟลเดอร์ (ดูเพิ่มเติมเกี่ยวกับพาร์ติชันที่ ภาพรวมพาร์ติชัน และ สร้างพาร์ติชันผลิตภัณฑ์ )
ในกรณีที่สอง เนื่องจากพาร์ติชันผู้ขายสามารถอัปเดตแยกต่างหากจากระบบได้ แอปที่โฮสต์ที่นี่จะไม่สามารถเข้าถึง API ระบบ @hide ได้ ขึ้นอยู่กับตำแหน่งของแอปที่ติดตั้งไว้ล่วงหน้า การอัพเดตอาจดำเนินการเป็น OTA (ดู การอัปเดต OTA ) หรือผ่านการอัปเดตแอปจาก App Store
การปรับแต่ง
ดังที่ได้กล่าวไว้ใน แนวคิดเฉพาะด้านยานยนต์ ความสอดคล้องและการปรับแต่ง UI/UX มีความสำคัญในยานยนต์มากกว่าในรูปแบบอื่นๆ เพื่อการทำงานร่วมกันสูงสุด แนะนำให้ใช้ ไลบรารี AAOS Car UI อย่างยิ่ง ไลบรารีนี้มีส่วนประกอบและทรัพยากรที่สามารถรวมเข้ากับแอปยานยนต์ที่ออกแบบมาเพื่อปรับแต่งโดย OEM ด้วยวิธีนี้ APK เดียวสามารถสร้างในลักษณะที่สามารถปรับแต่ง UI ของมันให้เข้ากับการออกแบบของรถแต่ละรุ่นได้