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

การเลือก 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 สามารถรวมกิจกรรม 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 ใน เอกสารคำจำกัดความความเข้ากันได้ (CDD) ของ Android

สำคัญ ในทุกกรณี จะมีเพียง VIA เริ่มต้นเท่านั้นที่ได้รับสิทธิ์เหล่านี้ล่วงหน้า หากระบบโหลด VIA ไว้ล่วงหน้ามากกว่า 1 รายการ VIA ที่ไม่ใช่ค่าเริ่มต้นต้องขอสิทธิ์จากผู้ใช้อย่างชัดเจนเป็นส่วนหนึ่งของการตั้งค่าหรือระหว่างการใช้งานครั้งแรก

การเผยแพร่ (ติดตั้งล่วงหน้าและทำให้อัปเดตใช้งานได้)

VIA ที่ติดตั้งไว้ล่วงหน้าต้องอยู่ในพาร์ติชันและโฟลเดอร์ /product/priv-apps หรือ /vendor/priv-apps (ดูข้อมูลเพิ่มเติมเกี่ยวกับพาร์ติชันได้ที่ภาพรวมพาร์ติชันและสร้างพาร์ติชันสำหรับผลิตภัณฑ์)

ในกรณีที่ 2 เนื่องจากพาร์ติชันของผู้ให้บริการอัปเดตแยกต่างหากจากระบบ แอปที่โฮสต์ที่นี่จะเข้าถึง @hide system API ไม่ได้ การอัปเดตอาจทำได้ผ่าน OTA (ดูการอัปเดต OTA) หรือผ่านอัปเดตแอปจาก App Store ทั้งนี้ขึ้นอยู่กับตำแหน่งของแอปที่ติดตั้งไว้ล่วงหน้า

การปรับแต่ง

ดังที่ได้กล่าวไว้ในแนวคิดเฉพาะสำหรับยานยนต์ ความสอดคล้องและการปรับแต่ง UI/UX มีความสำคัญต่อยานยนต์มากกว่ารูปแบบอื่นๆ เราขอแนะนำอย่างยิ่งให้ใช้ AAOSคลัง UI ของรถยนต์เพื่อให้สามารถทำงานร่วมกันได้สูงสุด ไลบรารีนี้มีคอมโพเนนต์และทรัพยากรที่ผสานรวมเข้ากับแอปยานยนต์ที่ออกแบบมาเพื่อให้ OEM ปรับแต่งได้ วิธีนี้ช่วยให้สร้าง APK รายการเดียวได้ในรูปแบบที่ปรับแต่ง UI ให้เข้ากับการออกแบบของรถแต่ละรุ่น