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

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

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

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

VIA ที่เลือกจะแสดงต่อระบบได้ 2 แบบดังนี้

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

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

การทริกเกอร์คำสั่งให้ดำเนินการ

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

การทริกเกอร์คำสั่งให้ดำเนินการ

รูปที่ 2 การทริกเกอร์คำสั่งให้ดำเนินการ

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

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

ซึ่งหมายรวมถึงการกดปุ่มฮาร์ดแวร์ที่สั้นหรือยาว ใน AAOS PTT จะจัดการโดย CarInputService ในการใช้งานเริ่มต้น บริการนี้จะจัดการ ป้อนเหตุการณ์ที่ได้รับผ่าน HAL ของยานพาหนะ และในกรณีของเสียงพูด การโต้ตอบของ Google จะใช้ตรรกะต่อไปนี้กับเหตุการณ์สําคัญ

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

เซสชันที่เริ่มใช้ขั้นตอนนี้จะระบุด้วย SHOW_SOURCE_PUSH_TO_TALK

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

รูปที่ 3 การทริกเกอร์ PTT

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

การทริกเกอร์ "แตะเพื่อสนทนา" (หรือปุ่มซอฟต์แวร์)

การทริกเกอร์การโต้ตอบด้วยเสียงจาก 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 สามารถรวมกิจกรรม 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 ใน Android เอกสารคำจำกัดความความเข้ากันได้ (CDD)

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

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

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

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

การปรับแต่ง

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