ขั้นตอนการผสานรวม

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

แอปเริ่มต้นในหน้าจอการตั้งค่า

รูปที่ 1 แอปเริ่มต้นในหน้าจอการตั้งค่า

ระบบจะแสดง VIA ที่เลือกใน 2 วิธีต่อไปนี้

  1. เป็นส่วนหนึ่งของRolesManager บริการของระบบ
  2. โดย 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

การทริกเกอร์ PTT

รูปที่ 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 สามารถปรับแต่งให้เข้ากับการออกแบบของรถยนต์แต่ละรุ่นได้