ระบบจะเลือก VIA ที่ใช้งานอยู่โดย ManageAssistActivity ใน CarSettings แอป PackageInstaller จะทริกเกอร์โฟลว์นี้ ซึ่งเป็นส่วนหนึ่งของส่วนแอปเริ่มต้นของหน้าจอการตั้งค่า

รูปที่ 1 แอปเริ่มต้นในหน้าจอการตั้งค่า
ระบบจะแสดง VIA ที่เลือกใน 2 วิธีต่อไปนี้
- เป็นส่วนหนึ่งของ
RolesManagerบริการของระบบ - โดย
VoiceInteractionManagerServiceผ่าน API ภายในAssistUtils
คุณดูรายการ VIA ที่เป็นตัวเลือกได้โดยใช้ RolesManager
ที่มีชื่อบทบาท android.app.role.ASSISTANT
การทริกเกอร์คำที่นิยม
Android มี AlwaysOnHotwordDetector
เป็นการแยกส่วนเหนือ DSP ของฮาร์ดแวร์ ซึ่งเป็นวิธีที่สะดวกในการเชื่อมโยง VoiceInteractionService กับรูปแบบเสียงสำหรับการจดจำเสียงพูดแบบเปิดตลอดเวลาที่ใช้พลังงานต่ำ นี่คือโฟลว์การโต้ตอบที่พบได้บ่อยที่สุดและเป็นที่รู้จักกันดี ซึ่งผู้ใช้ขอโต้ตอบกับแอปพลิเคชันเสียง (VA) เพื่อเริ่มการสนทนาใหม่ ระบบจะระบุเซสชันเสียงที่เริ่มด้วยวิธีนี้ด้วย SHOW_SOURCE_ASSIST_GESTURE flag
รูปที่ 2 การทริกเกอร์คำที่นิยม
คำอธิบาย บริการระบบจะปรากฏเป็นสีฟ้าอ่อน ส่วนประกอบ VIA จะปรากฏเป็นสีเขียว
การทริกเกอร์ PTT
ซึ่งจะใช้ได้กับการกดปุ่มกดแบบยาวหรือสั้น ใน AAOS ระบบจะจัดการ PTT โดย CarInputService ในการติดตั้งใช้งานเริ่มต้น บริการนี้จะจัดการเหตุการณ์อินพุตที่ได้รับผ่าน HAL ยานพาหนะ และในกรณีเฉพาะของการโต้ตอบด้วยเสียง บริการนี้จะใช้ตรรกะต่อไปนี้กับเหตุการณ์สำคัญ
- เหตุการณ์ PTT สั้นๆ (
KeyEvent.KEYCODE_VOICE_ASSIST) จะเปลี่ยนเส้นทางไปยังVoiceInteractionManagerServiceเพื่อเริ่มเซสชันเสียงใหม่ - เหตุการณ์ PTT แบบยาวจะส่งไปยังตัวรับการฉายภาพ (เช่น Android Auto หรือ CarPlay) ก่อน จากนั้นจึงส่งไปยังอุปกรณ์ที่เชื่อมต่อด้วยบลูทูธ และสุดท้ายส่งไปยังแอป VIA ในเครื่อง
ระบบจะระบุเซสชันที่เริ่มโดยใช้โฟลว์นี้ด้วย SHOW_SOURCE_PUSH_TO_TALK

รูปที่ 3 การทริกเกอร์ PTT
หากต้องการผสานรวมปุ่มควบคุมด้วยเสียงของฮาร์ดแวร์เข้ากับ AAOS โปรดดูการผสานรวมอินพุตคีย์ยานยนต์
การทริกเกอร์แบบแตะเพื่อพูด (หรือปุ่มซอฟต์แวร์)
การทริกเกอร์การโต้ตอบด้วยเสียงจาก 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 สามารถมีกิจกรรมตัวเปิดแอปอย่างน้อย 1 รายการในไฟล์ Manifest เช่นเดียวกับแอปอื่นๆ นักพัฒนาแอปและ OEM ที่ยอมรับการติดตั้งแอปนี้ล่วงหน้าจะเป็นผู้กำหนดว่ากิจกรรมเหล่านี้จะทำอะไร
สำคัญ ในยานยนต์ กิจกรรมทั้งหมด รวมถึงกิจกรรมของระบบจะอยู่ภายใต้ข้อจำกัด UX ขณะขับรถ หากประสบการณ์การใช้งานที่คุณต้องการ
เปิดใช้จากไอคอน Launcher ต้องพร้อมใช้งานขณะขับรถ ให้เพิ่มประสบการณ์การใช้งานนั้นลงใน
รายการที่อนุญาต (หากคุณเป็น OEM) หรือใส่คำอธิบายประกอบกิจกรรมด้วย distractionOptimized
ข้อมูลเมตา ดูข้อมูลเพิ่มเติมได้ที่
หลักเกณฑ์การรบกวนผู้ขับขี่
DSP และ Audio HAL
โปรดอ่านหลักเกณฑ์ที่อัปเดตเกี่ยวกับการบันทึกเสียงแบบเปิดตลอดเวลา และการบันทึกเสียง HAL พร้อมกันที่ การบันทึกพร้อมกัน การเข้าถึง API เหล่านี้อาจส่งผลอย่างมากต่อประสิทธิภาพการตรวจหาคำที่นิยม ตามที่อธิบายไว้ที่ การตอบสนองต่อ คำที่นิยม
สิทธิ์
ให้สิทธิ์ที่มีอภิสิทธิ์ของระบบ
เนื่องจากผู้ใช้ไม่สามารถให้สิทธิ์ที่มีอภิสิทธิ์ได้ หาก VIA ต้องการสิทธิ์ดังกล่าว OEM ต้องโหลด APK ล่วงหน้าในอิมเมจระบบ และให้สิทธิ์เหล่านั้นอย่างชัดแจ้งในการสร้าง ดู ขอสิทธิ์ permissions.
หากต้องการทำเช่นนั้น ให้เพิ่มทรัพยากร 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 ในเอกสารนิยามความเข้ากันได้ (CDD) ของ Android
สำคัญ ในทุกกรณี เฉพาะ VIA เริ่มต้นเท่านั้นที่จะได้รับสิทธิ์เหล่านี้ล่วงหน้า หากระบบโหลด VIA ไว้ล่วงหน้ามากกว่า 1 รายการ VIA ที่ไม่ใช่ค่าเริ่มต้นจะต้องขอสิทธิ์จากผู้ใช้อย่างชัดแจ้งซึ่งเป็นส่วนหนึ่งของการตั้งค่าหรือระหว่างการใช้งานครั้งแรก
การจัดจำหน่าย (การติดตั้งล่วงหน้าและการทำให้ใช้งานได้ของการอัปเดต)
VIA ที่ติดตั้งล่วงหน้าต้องอยู่ในพาร์ติชันและโฟลเดอร์ /product/priv-apps หรือ
/vendor/priv-apps (ดูข้อมูลเพิ่มเติมเกี่ยวกับพาร์ติชันได้ที่ภาพรวมของพาร์ติชัน และ
สร้างพาร์ติชัน
ผลิตภัณฑ์)
ในกรณีที่ 2 เนื่องจากพาร์ติชันของผู้ให้บริการอาจได้รับการอัปเดตแยกจากระบบ แอปที่โฮสต์ไว้ที่นี่จึงเข้าถึง @hide system APIs ไม่ได้ การอัปเดตอาจดำเนินการเป็น OTA (ดูการอัปเดต OTA) หรือผ่านการอัปเดตแอปจาก App Store ทั้งนี้ขึ้นอยู่กับตำแหน่งของแอปที่ติดตั้งล่วงหน้า
การปรับแต่ง
ตามที่กล่าวไว้ใน แนวคิดเฉพาะของยานยนต์, ความสอดคล้องและการปรับแต่ง UI/UX มีความสำคัญในยานยนต์มากกว่าฟอร์มแฟกเตอร์อื่นๆ เราขอแนะนำอย่างยิ่งให้ใช้ไลบรารี AAOS Car UI เพื่อให้ทำงานร่วมกันได้สูงสุด ไลบรารีนี้มีคอมโพเนนต์และทรัพยากรที่สามารถผสานรวมเข้ากับแอปยานยนต์ที่ออกแบบมาเพื่อให้ OEM ปรับแต่งได้ วิธีนี้จะช่วยให้สร้าง APK เดียวในลักษณะที่ UI สามารถปรับแต่งให้เข้ากับการออกแบบของรถยนต์แต่ละรุ่นได้