Android 10 ปรับปรุงประสบการณ์ของผู้ใช้ที่ต้องมีการบันทึกเสียงที่ใช้งานอยู่มากกว่า 1 รายการพร้อมกัน เช่น หากผู้ใช้ต้องการควบคุมการโทร VoIP หรือวิดีโอบันทึกด้วยคำสั่งเสียงจากบริการการช่วยเหลือพิเศษ
เฟรมเวิร์กเสียงใช้นโยบายที่อนุญาตให้แอปที่มีสิทธิ์บางแอปเท่านั้นบันทึกเสียงได้พร้อมกันกับแอปทั่วไป
ระบบจะใช้นโยบายการทำงานพร้อมกันด้วยการปิดเสียงที่บันทึกไว้แทนที่จะป้องกันไม่ให้แอปพลิเคชันเริ่มบันทึก ซึ่งช่วยให้เฟรมเวิร์กจัดการการเปลี่ยนแปลงจำนวนและประเภทของ Use Case การบันทึกที่ใช้งานอยู่แบบไดนามิกได้ โดยไม่ป้องกันไม่ให้แอปเริ่มการบันทึกในกรณีที่สามารถกู้คืนสิทธิ์เข้าถึงไมโครโฟนอย่างเต็มรูปแบบได้หลังจากที่แอปอื่นบันทึกเสร็จแล้ว
ผลที่ตามมาสำหรับ HAL เสียงและระบบย่อยเสียงคือต้องรองรับสตรีมอินพุตที่ใช้งานอยู่หลายรายการพร้อมกัน แม้ว่าในบางกรณีจะมีเพียงสตรีมเดียวที่ส่งเสียงที่ไม่ใช่เสียงเงียบไปยังไคลเอ็นต์ที่ใช้งานอยู่ก็ตาม
ข้อกำหนด CDD
โปรดดู CDD สำหรับข้อกำหนดในการสนับสนุนการบันทึกพร้อมกัน
จับภาพสถานการณ์จาก HAL เสียง
สถานการณ์การจับภาพพร้อมกันอาจส่งผลให้เกิดสถานการณ์ที่แตกต่างกันในแง่ของจํานวนสตรีมอินพุตที่ใช้งานอยู่ การเลือกอุปกรณ์อินพุต หรือการกําหนดค่าการประมวลผลก่อน
การทำงานพร้อมกันอาจเกิดขึ้นระหว่างรายการต่อไปนี้
- สตรีมอินพุตหลายรายการจากหน่วยประมวลผลแอปพลิเคชัน (AP)
- สตรีมอินพุตและการโทรด้วยเสียง
- สตรีมอินพุตและ DSP เสียงที่ใช้การตรวจจับคําที่มักใช้แบบพลังงานต่ำ
กิจกรรมที่เกิดขึ้นพร้อมกันของสตรีมอินพุต AP
เฟรมเวิร์กเสียงจะใช้ไฟล์การกำหนดค่านโยบายเสียง audio_policy_configuration.xml
เพื่อกำหนดจำนวนสตรีมอินพุตที่เปิดและใช้งานได้พร้อมกัน
HAL เสียงต้องรองรับอินสแตนซ์ของโปรไฟล์อินพุตแต่ละรายการอย่างน้อย 1 รายการ (mixPort
ของบทบาท sink
) ที่แสดงในไฟล์การกําหนดค่าที่เปิดอยู่และใช้งานอยู่เป็นอย่างน้อย
การเลือกอุปกรณ์
เมื่อมีการแนบไคลเอ็นต์ที่ใช้งานอยู่หลายรายการกับสตรีมอินพุต HAL เดียวกัน เฟรมเวิร์กจะเลือกอุปกรณ์ที่เหมาะสมสำหรับสตรีมอินพุตนี้ตามลําดับความสําคัญของ Use Case
เมื่อสตรีมอินพุตหลายรายการทำงานอยู่ สตรีมแต่ละรายการอาจมีการเลือกอุปกรณ์ที่แตกต่างกัน
หากเทคโนโลยีเข้ากันได้ เราขอแนะนำให้ HAL เสียงและระบบย่อยอนุญาตให้สตรีมต่างๆ บันทึกจากอุปกรณ์ต่างๆ เช่น ชุดหูฟังบลูทูธและไมโครโฟนในตัว
หากใช้งานร่วมกันไม่ได้ (เช่น อุปกรณ์ 2 เครื่องใช้อินเทอร์เฟซเสียงดิจิทัลหรือแบ็กเอนด์เดียวกัน) HAL เสียงจะต้องเลือกสตรีมที่จะควบคุมการเลือกอุปกรณ์
ในกรณีนี้
- สถานะที่ได้ต้องสอดคล้องกันและเสนอตัวเลือกอุปกรณ์เดียวกันเมื่อใช้สถานการณ์เดียวกันซ้ำ
- เมื่อสถานะการเกิดขึ้นพร้อมกันสิ้นสุดลง สตรีมที่ใช้งานอยู่ที่เหลือจะต้องกำหนดเส้นทางไปยังอุปกรณ์ที่ขอในตอนแรกในสตรีมนี้
หาก HAL เสียงกำหนดลําดับความสําคัญระหว่าง Use Case ที่ใช้งานอยู่ ให้ทำตามลําดับเดียวกับที่พบใน source_priority()
ใน frameworks/av/services/audiopolicy/common/include/policy.h
การเลือกการประมวลผลข้อมูลล่วงหน้า
เฟรมเวิร์กเสียงสามารถขอการประมวลผลล่วงหน้าในสตรีมอินพุตโดยใช้เมธอด addEffect()
หรือ removeEffect()
HAL
สําหรับการประมวลผลข้อมูลล่วงหน้าในสตรีมอินพุตหนึ่งๆ เฟรมเวิร์กเสียงจะเปิดใช้เฉพาะการกําหนดค่าที่เกี่ยวข้องกับ Use Case ที่ใช้งานอยู่ซึ่งมีลําดับความสําคัญสูงสุดในสตรีมอินพุต อย่างไรก็ตาม อาจมีบางส่วนทับซ้อนกันระหว่างการเปิดใช้งานและการปิดใช้งาน Use Case ซึ่งทําให้กระบวนการที่ใช้งานอยู่ 2 รายการ (เช่น อินสแตนซ์ของการตัดเสียงสะท้อน 2 รายการ) ทำงานพร้อมกันในสตรีมอินพุตเดียวกัน ในกรณีนี้ การใช้งาน HAL จะเลือกคำขอที่ยอมรับ โดยจะติดตามคำขอที่ใช้งานอยู่และคืนค่าสถานะที่ถูกต้องเมื่อปิดใช้กระบวนการใดกระบวนการหนึ่ง
เมื่อสตรีมการบันทึกหลายรายการทำงานพร้อมกัน ระบบอาจเรียกใช้คำขอประมวลผลก่อนการแปลงที่แตกต่างกันในสตรีมต่างๆ
การติดตั้งใช้งาน HAL และระบบย่อยเสียงควรอนุญาตให้ใช้การประมวลผลก่อนที่แตกต่างกันกับสตรีมต่างๆ แม้ว่าสตรีมเหล่านั้นจะใช้อุปกรณ์อินพุตเดียวกันก็ตาม กล่าวคือ ควรใช้การประมวลผลก่อนหลังจากแยกข้อมูลสตรีมจากแหล่งที่มาหลักในการบันทึก
หากใช้ไม่ได้เนื่องจากเหตุผลทางเทคนิคในระบบย่อยเสียงหนึ่งๆ HAL เสียงควรใช้กฎลําดับความสําคัญที่คล้ายกับที่ระบุไว้ในการเลือกอุปกรณ์
การโทรด้วยเสียงและการบันทึกจาก AP พร้อมกัน
การจับภาพจาก AP อาจเกิดขึ้นขณะที่มีการโทรด้วยเสียง สถานการณ์นี้ไม่ใช่สถานการณ์ใหม่ใน Android 10 และไม่เกี่ยวข้องกับฟีเจอร์การจับภาพพร้อมกันโดยตรง แต่เราขอกล่าวถึงหลักเกณฑ์สำหรับสถานการณ์นี้
ต้องใช้การบันทึก 2 ประเภทจาก AP ระหว่างการโทร
บันทึกการรับและส่งสายเรียกเข้า
การบันทึก RX และ TX ของการโทรจะทริกเกอร์โดยการใช้แหล่งที่มาของเสียง
AudioSource.VOICE_UPLINK
หรือ AudioSource.VOICE_DOWNLINK
และ/หรืออุปกรณ์
AudioDevice.IN_TELEPHONY_RX
HAL เสียงควรแสดงในโปรไฟล์อินพุต (mixPort
ของบทบาท sink
)
โดยมีเส้นทางที่พร้อมใช้งานจากอุปกรณ์ AudioDevice.IN_TELEPHONY_RX
เมื่อการโทรเชื่อมต่อ (โหมดเสียงคือ AudioMode.IN_CALL
) คุณควรมีสตรีมการบันทึกที่ใช้งานอยู่อย่างน้อย 1 รายการจากอุปกรณ์ AudioDevice.IN_TELEPHONY_RX
จับภาพจากอุปกรณ์อินพุต เมื่อมีการโทรอยู่
เมื่อการโทรทำงานอยู่ (โหมดเสียงคือ AudioMode.IN_CALL
) คุณควรเปิดและเปิดใช้งานสตรีมอินพุตจาก AP ได้ตามที่ระบุไว้ในส่วนกิจกรรมที่เกิดขึ้นพร้อมกันของสตรีมอินพุต AP
อย่างไรก็ตาม ลำดับความสำคัญของการเลือกอุปกรณ์และการประมวลผลล่วงหน้าควรขึ้นอยู่กับการโทรด้วยเสียงเสมอในกรณีที่มีความขัดแย้งกับคำขอจากสตรีมอินพุต AP
การบันทึกพร้อมกันจาก DSP และ AP
เมื่อระบบย่อยเสียงมี DSP ที่รองรับฟังก์ชันการตรวจจับบริบทเสียงหรือคําที่ได้รับความนิยมแบบใช้พลังงานต่ำ การติดตั้งใช้งานควรรองรับการบันทึกพร้อมกันจาก AP และ DSP เสียง
ซึ่งรวมถึงทั้งการบันทึกโดย DSP ในระยะการตรวจจับเริ่มต้นและการบันทึกโดย AP ด้วย AudioSource.HOTWORD
หลังจากที่ DSP เรียกให้ตรวจจับ
ซึ่งควรแสดงโดย Flag การบันทึกพร้อมกันที่ HAL ของทริกเกอร์เสียงรายงานผ่านข้อบ่งชี้การใช้งาน: ISoundTriggerHw.Properties.concurrentCapture = true
HAL เสียงควรแสดงและใส่โปรไฟล์เฉพาะสำหรับการบันทึกคำสั่งให้ดำเนินการที่ระบุโดยแฟล็ก AudioInputFlag.HW_HOTWORD
ด้วย การติดตั้งใช้งานควรรองรับการเปิดและเปิดใช้งานสตรีมในโปรไฟล์นี้อย่างน้อยเท่ากับจํานวนโมเดลเสียงที่ HAL ตัวเรียกให้เสียงโหลดได้พร้อมกัน
การจับภาพจากโปรไฟล์อินพุตนี้ควรทําได้ในขณะที่โปรไฟล์อินพุตอื่นๆ ทํางานอยู่
ผลกระทบต่อการติดตั้งใช้งาน Assistant
ข้อกำหนดเกี่ยวกับการใช้ข้อมูลและการแจ้งเตือนผู้ใช้
เนื่องจากการใช้งานไมโครโฟนพร้อมกันอาจทำให้ข้อมูลส่วนตัวของผู้ใช้รั่วไหลได้หากมีการใช้ในทางที่ผิด เราจึงกำหนดเงื่อนไขและการรับประกันต่อไปนี้สำหรับแอปที่โหลดไว้ล่วงหน้าซึ่งมีสิทธิ์ซึ่งขอมีบทบาท Assistant
- ข้อมูลที่เก็บรวบรวมผ่านไมโครโฟนไม่ควรออกจากอุปกรณ์ เว้นแต่ว่าผู้ใช้จะโต้ตอบกับ Assistant เช่น หลังจากมีการเรียกให้ระบบดำเนินการ
- แอปพลิเคชันที่ฟังเสียงพร้อมกันควรแสดงสัญญาณที่มองเห็นได้ให้ผู้ใช้ทราบหลังจากตรวจพบคีย์เวิร์ด วิธีนี้ช่วยให้ผู้ใช้เข้าใจว่าการสนทนาต่อจากนี้จะผ่านแอปอื่น เช่น Assistant
- ผู้ใช้ควรสามารถปิดไมโครโฟนหรือทริกเกอร์ Assistant ได้
- เมื่อระบบจัดเก็บไฟล์บันทึกเสียงไว้ ผู้ใช้ควรเข้าถึง ตรวจสอบ และลบไฟล์บันทึกเสียงได้ทุกเมื่อ
การปรับปรุงฟังก์ชันการทำงานสำหรับ Android 10
ผู้ช่วยไม่บล็อกกัน
ใน Android 9 หรือต่ำกว่า เมื่อมี Assistant ที่เปิดอยู่เสมอ 2 ตัวในอุปกรณ์ จะมีเพียงตัวเดียวเท่านั้นที่ฟังคีย์เวิร์ดได้ จึงจำเป็นต้องสลับใช้ Assistant ทั้ง 2 ตัว ใน Android 10 นั้น Assistant เริ่มต้นจะฟังเสียงได้พร้อมกันกับ Assistant ตัวอื่นๆ ซึ่งจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นยิ่งขึ้นเมื่อใช้ทั้ง 2 Assistant
แอปที่กำลังเปิดไมค์ค้างไว้
เมื่อแอปอย่าง Shazam หรือ Waze เปิดไมค์ค้างไว้ Assistant เริ่มต้นจะยังคงฟังคำสั่งให้ดำเนินการอยู่
สำหรับแอป Assistant ที่ไม่ใช่แอปเริ่มต้น ลักษณะการทำงานสำหรับ Android 10 จะไม่เปลี่ยนแปลง
ตัวอย่างการใช้งาน HAL เสียง
ตัวอย่างการใช้งาน HAL เสียงที่เป็นไปตามหลักเกณฑ์ในเอกสารนี้ดูได้ใน AOSP