การเลือก VIA ที่ใช้งานอยู่ดำเนินการโดย
ManageAssistActivity
ใน CarSettings แอป PackageInstaller
จะทริกเกอร์ขั้นตอนนี้เป็นขั้นตอนหนึ่ง
ในส่วน "แอปเริ่มต้น" ในหน้าจอการตั้งค่า
รูปที่ 1 แอปเริ่มต้นในหน้าจอการตั้งค่า
VIA ที่เลือกจะแสดงต่อระบบได้ 2 แบบดังนี้
- เป็นส่วนหนึ่งของ
RolesManager
บริการของระบบ - โดย
VoiceInteractionManagerService
ผ่านทางAssistUtils
API ภายใน
รับรายการ VIA ของผู้สมัครโดยใช้ RolesManager
ด้วยชื่อบทบาท android.app.role.ASSISTANT
การทริกเกอร์คำสั่งให้ดำเนินการ
Android มี AlwaysOnHotwordDetector
โดยดูเป็นนามธรรมบน DSP ฮาร์ดแวร์ นี่เป็นวิธีที่สะดวกในการ
เชื่อมโยง VoiceInteractionService
กับรูปแบบเสียงสำหรับโหมดพลังงานต่ำแบบเปิดตลอดเวลา
การจดจำเสียง นี่คือขั้นตอนการโต้ตอบที่พบบ่อยที่สุดและเป็นที่รู้จักกันดี ซึ่งผู้ใช้
คำขอโต้ตอบกับแอปพลิเคชัน Voice (VA) เพื่อเริ่มการสนทนาใหม่ เสียง
เซสชันที่เริ่มต้นด้วยวิธีนี้จะระบุด้วย SHOW_SOURCE_ASSIST_GESTURE flag
รูปที่ 2 การทริกเกอร์คำสั่งให้ดำเนินการ
คำอธิบาย บริการของระบบจะปรากฏเป็นสีน้ำเงินอ่อน ส่วน VIA เป็นสีเขียว
การทริกเกอร์ PTT
ซึ่งหมายรวมถึงการกดปุ่มฮาร์ดแวร์ที่สั้นหรือยาว ใน AAOS PTT จะจัดการโดย CarInputService ในการใช้งานเริ่มต้น บริการนี้จะจัดการ ป้อนเหตุการณ์ที่ได้รับผ่าน HAL ของยานพาหนะ และในกรณีของเสียงพูด การโต้ตอบของ Google จะใช้ตรรกะต่อไปนี้กับเหตุการณ์สําคัญ
- กิจกรรม PTT ระยะสั้น (
KeyEvent.KEYCODE_VOICE_ASSIST
) จัดขึ้นที่VoiceInteractionManagerService
เพื่อเริ่มเซสชันเสียงใหม่ - เหตุการณ์ PTT แบบยาวจะส่งให้กับอุปกรณ์รับการฉายภาพโดยตรง (เช่น Android Auto หรือ CarPlay) จากนั้นไปที่อุปกรณ์ที่เชื่อมต่อบลูทูธ และสุดท้ายคือ VIA ในเครื่อง แอป
เซสชันที่เริ่มใช้ขั้นตอนนี้จะระบุด้วย SHOW_SOURCE_PUSH_TO_TALK
รูปที่ 3 การทริกเกอร์ PTT
หากต้องการผสานรวมปุ่มควบคุมด้วยเสียงของฮาร์ดแวร์กับ AAOS โปรดดูการผสานรวมอินพุตคีย์ Automotive
การทริกเกอร์ "แตะเพื่อสนทนา" (หรือปุ่มซอฟต์แวร์)
การทริกเกอร์การโต้ตอบด้วยเสียงจาก 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 สามารถรวมกิจกรรม Launcher อย่างน้อย 1 รายการไว้ใน ไฟล์ Manifest โดยขึ้นอยู่กับนักพัฒนาแอปและ OEM ที่จะยอมรับ ติดตั้งแอปนี้ล่วงหน้าเพื่อตัดสินใจว่ากิจกรรมเหล่านี้จะทำอะไรบ้าง
สำคัญ ในยานยนต์ กิจกรรมทั้งหมด รวมถึงระบบ
กิจกรรมจะขึ้นอยู่กับข้อจำกัดเกี่ยวกับ UX ขณะขับรถ หากประสบการณ์ที่คุณต้องการ
เพื่อเปิดใช้งานจากไอคอนตัวเรียกใช้งาน ต้องพร้อมใช้งานขณะขับรถ ให้เพิ่มไอคอนไว้ใน
รายการที่อนุญาต (หากคุณเป็น OEM) หรือใส่คำอธิบายประกอบกิจกรรมด้วย distractionOptimized
ข้อมูลเมตา สำหรับข้อมูลเพิ่มเติม โปรดดู
แนวทางเกี่ยวกับการรบกวนผู้ขับขี่
DSP และ HAL เสียง
อย่าลืมอ่านหลักเกณฑ์ที่อัปเดตเกี่ยวกับเสียงที่เปิดตลอดเวลาพร้อมกัน การบันทึกและ HAL เสียงที่การบันทึกพร้อมกัน การเข้าถึง API เหล่านี้อาจส่งผลกระทบอย่างมากต่อประสิทธิภาพของคำสั่งให้ดำเนินการ ตามที่อธิบายไว้ใน ตอบกลับ คำสั่งให้ดำเนินการ
สิทธิ์
ให้สิทธิ์ที่อยู่ในระบบ
หาก VIA จำเป็นต้องใช้ OEM ต้องโหลด APK ของตนล่วงหน้าในอิมเมจระบบ และให้สิทธิ์เหล่านั้น อยู่ในงานสร้างอย่างชัดเจน โปรดดู คำขอ สิทธิ์
โดยให้เพิ่มทรัพยากร Dependency ของรายการที่อนุญาตลงในโปรเจ็กต์โดยทำดังนี้
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 ต้องได้รับความยินยอมจากผู้ใช้เพื่อเข้าถึงฟังก์ชันบางอย่าง บางส่วนเหล่านี้
ได้รับสิทธิ์ล่วงหน้าเป็นค่า VoiceInteractionService
เริ่มต้น (ดู
DefaultPermissionGrantPolicy.java
)
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์สำหรับตัวแฮนเดิลเริ่มต้นได้ที่
สิทธิ์
ใช้ในเครื่องจัดการเริ่มต้นเท่านั้น คุณยังให้สิทธิ์ล่วงหน้าโดยใช้ default-permissions.xml
ได้ด้วย
ใหม่ สำหรับรายละเอียดเกี่ยวกับ
ข้อจำกัดเกี่ยวกับการให้สิทธิ์ล่วงหน้า โปรดดูส่วนที่ 9 ใน Android
เอกสารคำจำกัดความความเข้ากันได้ (CDD)
สำคัญ ในทุกกรณี เฉพาะ VIA เริ่มต้นเท่านั้นที่จะมี การให้สิทธิ์เหล่านี้ไว้ล่วงหน้า หากระบบมี VIA ที่โหลดไว้ล่วงหน้ามากกว่า 1 รายการ VIA ที่ไม่ใช่ค่าเริ่มต้นต้องขอสิทธิ์จากผู้ใช้อย่างชัดแจ้งในฐานะส่วนหนึ่งของ หรือในระหว่างการใช้งานครั้งแรก
การแจกจ่าย (ติดตั้งอัปเดตล่วงหน้าและทำให้ใช้งานได้)
VIA ที่ติดตั้งไว้ล่วงหน้าต้องมีอายุไม่ถึง /product/priv-apps
หรือ
/vendor/priv-apps
พาร์ติชันและโฟลเดอร์ (ดูข้อมูลเพิ่มเติมเกี่ยวกับพาร์ติชันได้ที่ภาพรวมพาร์ติชัน และ
สร้างผลิตภัณฑ์
พาร์ติชัน)
ในกรณีที่ 2 สมมติว่าอัปเดตพาร์ติชันผู้ให้บริการแยกกันได้ จากระบบ แอปที่โฮสต์ที่นี่จะไม่สามารถเข้าถึง @hide API ระบบ อาจมีการอัปเดต ทั้งนี้ขึ้นอยู่กับตำแหน่งของแอปที่ติดตั้งไว้ล่วงหน้า แบบ OTA (ดูการอัปเดต OTA) หรือผ่านแอป จาก App Store
การปรับแต่ง
ตามที่กล่าวไว้ใน แนวคิดเกี่ยวกับยานยนต์ ความสอดคล้องและการปรับแต่ง UI/UX ในยานยนต์สำคัญกว่ารูปแบบของอุปกรณ์อื่นๆ การใช้ AAOS เพื่อความสามารถในการทำงานร่วมกันสูงสุด ขอแนะนำอย่างยิ่งให้ใช้ไลบรารี UI ของรถ ไลบรารีนี้มีคอมโพเนนต์และทรัพยากรที่สามารถผสานรวมเข้ากับยานยนต์ได้ แอปที่ออกแบบมาให้ปรับแต่งโดย OEM ด้วยวิธีนี้ APK เดี่ยวสามารถสร้างใน เพื่อให้สามารถปรับแต่ง UI ให้เข้ากับดีไซน์รถยนต์แต่ละรุ่นได้