กระแสบูรณาการ

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

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

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

VIA ที่เลือกจะถูกเปิดเผยต่อระบบด้วยสองวิธี:

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

สามารถรับรายชื่อ VIA ของผู้สมัครได้โดยใช้ RolesManager โดยมีชื่อบทบาท android.app.role.ASSISTANT

การเรียกใช้คำที่นิยม

Android ให้ AlwaysOnHotwordDetector เป็นนามธรรมที่อยู่ด้านบนของฮาร์ดแวร์ DSP นี่เป็นวิธีที่สะดวกในการเชื่อมโยง VoiceInteractionService กับโมเดลเสียงเพื่อการจดจำเสียงที่เปิดตลอดเวลาโดยใช้พลังงานต่ำ นี่เป็นขั้นตอนการโต้ตอบที่พบบ่อยที่สุดและเป็นที่รู้จัก โดยที่ผู้ใช้ขอโต้ตอบกับแอปพลิเคชันเสียง (VA) เพื่อเริ่มการสนทนาใหม่ เซสชันเสียงที่เริ่มต้นด้วยวิธีนี้จะถูกระบุด้วย SHOW_SOURCE_ASSIST_GESTURE flag

การเรียกใช้คำที่นิยม

รูปที่ 2 การเรียกใช้คำที่นิยม

ตำนาน. บริการของระบบจะปรากฏเป็นสีฟ้าอ่อน ส่วนประกอบ VIA เป็นสีเขียว

ปตท. กระตุ้น

สิ่งนี้ใช้กับการกดปุ่มฮาร์ดแวร์แบบยาวหรือสั้น ใน AAOS ปตท. ได้รับการจัดการโดย CarInputService ในการใช้งานเริ่มต้น บริการนี้จะจัดการเหตุการณ์อินพุตที่ได้รับผ่าน HAL ของยานพาหนะ และในกรณีเฉพาะของการโต้ตอบด้วยเสียง บริการจะใช้ตรรกะต่อไปนี้กับเหตุการณ์สำคัญ:

  • กิจกรรม PTT สั้นๆ ( KeyEvent.KEYCODE_VOICE_ASSIST ) จะถูกส่งไปยัง VoiceInteractionManagerService เพื่อเริ่มเซสชันเสียงใหม่
  • กิจกรรม PTT แบบยาวจะถูกส่งต่อไปยังเครื่องรับการฉายภาพ (เช่น Android Auto หรือ CarPlay) ก่อน จากนั้นไปยังอุปกรณ์ที่เชื่อมต่อ Bluetooth และสุดท้ายไปยังแอป VIA ในเครื่อง

เซสชันที่เริ่มใช้โฟลว์นี้จะถูกระบุด้วย SHOW_SOURCE_PUSH_TO_TALK

ปตท. กระตุ้น

รูปที่ 3 ปตท. กระตุ้น

หากต้องการรวมปุ่มควบคุมด้วยเสียงด้วยฮาร์ดแวร์เข้ากับ AAOS โปรดดูการรวม อินพุตกุญแจยานยนต์

การเรียกใช้ Tap-to-Talk (หรือปุ่มซอฟต์แวร์)

การทริกเกอร์การโต้ตอบด้วยเสียงจาก 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 สามารถรวมกิจกรรมตัวเรียกใช้งานอย่างน้อยหนึ่งกิจกรรมไว้ในรายการได้ ขึ้นอยู่กับนักพัฒนาแอปและ OEM ที่ยอมรับที่จะติดตั้งแอปนี้ล่วงหน้าเพื่อตัดสินใจว่ากิจกรรมเหล่านี้จะทำอะไร

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

DSP และเสียง HAL

อย่าลืมอ่านหลักเกณฑ์ที่อัปเดตเกี่ยวกับการบันทึกเสียงที่เปิดพร้อมกันตลอดเวลาและ HAL เสียงที่ การบันทึกพร้อมกัน การเข้าถึง API เหล่านี้อาจส่งผลกระทบอย่างมีนัยสำคัญต่อประสิทธิภาพของการตรวจจับคำที่นิยม ตามที่อธิบายไว้ใน การตอบสนองต่อคำที่นิยม

สิทธิ์

ให้สิทธิ์สิทธิ์แก่ระบบ

เนื่องจากผู้ใช้ไม่สามารถให้สิทธิ์พิเศษได้ หาก VIA ต้องการสิทธิ์ดังกล่าว OEM จะต้องโหลด APK ล่วงหน้าในอิมเมจระบบของตน และให้สิทธิ์เหล่านั้นอย่างชัดเจนในรุ่นของตน ดู ขอสิทธิ์

โดยเพิ่มการพึ่งพารายการที่อนุญาตของสิทธิ์ในโปรเจ็กต์ของคุณ:

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 ต้องได้รับความยินยอมจากผู้ใช้เพื่อเข้าถึงฟังก์ชันบางอย่าง สิทธิ์บางส่วนเหล่านี้ได้รับการ pregranted เป็นค่าเริ่มต้น VoiceInteractionService (ดู DefaultPermissionGrantPolicy.java ) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์สำหรับตัวจัดการเริ่มต้น โปรดดู ที่สิทธิ์ที่ใช้เฉพาะในตัวจัดการเริ่มต้นเท่านั้น นอกจากนี้ยังสามารถให้สิทธิ์ล่วงหน้าได้โดยใช้ไฟล์คอนฟิกูเรชัน default-permissions.xml สำหรับรายละเอียดเกี่ยวกับข้อจำกัดเกี่ยวกับการให้สิทธิ์ล่วงหน้า โปรดดูส่วนที่ 9 ใน เอกสารคำจำกัดความความเข้ากันได้ของ Android (CDD)

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

การกระจาย (ติดตั้งล่วงหน้าและปรับใช้การอัปเดต)

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

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

การปรับแต่ง

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