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