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

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

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

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

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

  1. เป็นส่วนหนึ่งของRolesManager บริการของระบบ
  2. โดย VoiceInteractionManagerService ผ่าน AssistUtils API ภายใน

คุณดูรายการ 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 จาก 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 ให้เข้ากับการออกแบบของรถแต่ละรุ่นได้