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

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