Android 10 ปรับปรุงประสบการณ์ของผู้ใช้ที่ต้องมีการจับภาพเสียงที่ใช้งานอยู่มากกว่า 1 รายการพร้อมกัน เช่น หากผู้ใช้ต้องการควบคุมการโทรผ่าน VoIP หรือเครื่องบันทึกวิดีโอด้วยคำสั่งเสียงที่ได้รับจากบริการการช่วยเหลือพิเศษ
เฟรมเวิร์กเสียงจะใช้นโยบายที่อนุญาตให้เฉพาะแอปที่มีสิทธิ์บางแอปเท่านั้นที่บันทึกพร้อมกับแอปปกติได้
นโยบายการทำงานพร้อมกันจะได้รับการติดตั้งใช้งานโดยการปิดเสียงที่บันทึกไว้แทนที่จะป้องกันไม่ให้ แอปพลิเคชันเริ่มบันทึก ซึ่งจะช่วยให้เฟรมเวิร์กจัดการการเปลี่ยนแปลงจำนวนและประเภทของกรณีการใช้งานการจับภาพที่ใช้งานอยู่แบบไดนามิกได้ โดยไม่ขัดขวางไม่ให้แอปเริ่มจับภาพในกรณีที่แอปสามารถกู้คืนสิทธิ์เข้าถึงไมโครโฟนแบบเต็มได้หลังจากที่แอปอื่นจับภาพเสร็จแล้ว
ผลที่ตามมาสำหรับ HAL เสียงและระบบย่อยเสียงคือต้องรองรับสตรีมอินพุตที่ใช้งานอยู่หลายรายการพร้อมกัน แม้ว่าในบางกรณีจะมีเพียงสตรีมเดียวที่ให้เสียงที่ไม่เงียบแก่ไคลเอ็นต์ที่ใช้งานอยู่ก็ตาม
ข้อกำหนด CDD
ดูข้อกำหนดสำหรับการรองรับการจับภาพพร้อมกันได้ที่ CDD
บันทึกสถานการณ์จาก HAL ของเสียง
สถานการณ์การจับภาพพร้อมกันอาจส่งผลให้เกิดสถานการณ์ที่แตกต่างกันในแง่ของจำนวนสตรีมอินพุตที่ใช้งานอยู่ การเลือกอุปกรณ์อินพุต หรือการกำหนดค่าการประมวลผลเบื้องต้น
การทำงานพร้อมกันอาจเกิดขึ้นระหว่างสิ่งต่อไปนี้
- สตรีมอินพุตหลายรายการจาก Application Processor (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
สำหรับการประมวลผลเบื้องต้นในสตรีมอินพุตที่กำหนด เฟรมเวิร์กเสียงจะเปิดใช้เฉพาะ การกำหนดค่าที่สอดคล้องกับกรณีการใช้งานที่ใช้งานอยู่ซึ่งมีลำดับความสำคัญสูงสุดใน สตรีมอินพุต อย่างไรก็ตาม อาจมีการทับซ้อนกันระหว่างการเปิดใช้งานและปิดใช้งานกรณีการใช้งาน ซึ่งทำให้กระบวนการที่ใช้งานอยู่ 2 รายการทำงานพร้อมกัน (เช่น ตัวอย่างการยกเลิกเสียงก้อง 2 รายการ) ทำงาน ในสตรีมอินพุตเดียวกัน ในกรณีนี้ การติดตั้งใช้งาน HAL จะเลือกคำขอที่ ยอมรับ โดยจะติดตามคำขอที่ใช้งานอยู่และคืนค่าสถานะที่ถูกต้องเมื่อปิดใช้กระบวนการใดกระบวนการหนึ่ง
เมื่อสตรีมการจับภาพหลายรายการทำงานพร้อมกัน คำขอการประมวลผลล่วงหน้าที่แตกต่างกันอาจทำงานในสตรีมที่ต่างกัน
การใช้งาน HAL และระบบย่อยเสียงควรอนุญาตให้ใช้การประมวลผลล่วงหน้าที่แตกต่างกันกับสตรีมต่างๆ แม้ว่าจะใช้อุปกรณ์อินพุตเดียวกันก็ตาม กล่าวคือ ควรใช้การประมวลผลล่วงหน้า หลังจากแยกสตรีมออกจากแหล่งที่มาของการจับภาพหลัก
หากทำไม่ได้เนื่องด้วยเหตุผลทางเทคนิคในระบบย่อยเสียงที่กำหนด HAL เสียงควรใช้ กฎลำดับความสำคัญที่คล้ายกับที่ระบุไว้ใน การเลือกอุปกรณ์
การโทรด้วยเสียงและการบันทึกพร้อมกันจาก AP
การจับภาพจาก AP จะเกิดขึ้นขณะที่การโทรด้วยเสียงยังคงใช้งานอยู่ สถานการณ์นี้ไม่ใช่เรื่องใหม่ใน Android 10 และไม่เกี่ยวข้องโดยตรงกับฟีเจอร์การจับภาพพร้อมกัน แต่ก็ควรกล่าวถึงหลักเกณฑ์สำหรับสถานการณ์นี้
คุณต้องบันทึกภาพ 2 ประเภทที่แตกต่างกันจาก AP ในระหว่างการโทร
บันทึก RX และ TX ของการโทร
การบันทึก 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 ทริกเกอร์การตรวจจับ
ซึ่งควรแสดงโดยแฟล็กการจับภาพพร้อมกันที่รายงานโดย HAL ทริกเกอร์เสียงผ่านตัวอธิบายการติดตั้งใช้งาน: ISoundTriggerHw.Properties.concurrentCapture = true
นอกจากนี้ HAL ของเสียงควรแสดงและป้อนโปรไฟล์ที่เฉพาะเจาะจงสำหรับการจับคำสั่งเสียงที่ระบุโดย
Flag AudioInputFlag.HW_HOTWORD
การติดตั้งใช้งานควรรองรับการเปิดและเปิดใช้งานสตรีมจำนวนหนึ่งในโปรไฟล์นี้อย่างน้อยเท่ากับจำนวนโมเดลเสียงที่ HAL ของทริกเกอร์เสียงโหลดพร้อมกันได้
คุณควรบันทึกจากโปรไฟล์อินพุตนี้ได้ในขณะที่โปรไฟล์อินพุตอื่นๆ ใช้งานอยู่
ผลกระทบต่อการใช้งาน Assistant
ข้อกำหนดเกี่ยวกับการใช้ข้อมูลและการแจ้งเตือนผู้ใช้
เนื่องจากการใช้ไมโครโฟนพร้อมกันอาจทำให้ข้อมูลส่วนตัวของผู้ใช้รั่วไหลได้หากมีการละเมิด เราจึงต้องใช้เงื่อนไขและการรับประกันต่อไปนี้กับแอปที่โหลดล่วงหน้าซึ่งมีสิทธิ์และขอรับบทบาทผู้ช่วย
- ข้อมูลที่เก็บรวบรวมผ่านไมโครโฟนไม่ควรออกจากอุปกรณ์ เว้นแต่ผู้ใช้จะโต้ตอบกับ Assistant เช่น หลังจากที่ระบบตรวจพบคำสั่งเรียกใช้
- แอปพลิเคชันที่กำลังฟังอยู่พร้อมกันควรแสดงคิวภาพแก่ผู้ใช้หลังจากตรวจพบคำสั่งเปิดใช้งาน ซึ่งจะช่วยให้ผู้ใช้เข้าใจว่าการสนทนาเพิ่มเติมจะดำเนินการผ่านแอปอื่น เช่น Assistant
- ผู้ใช้ควรมีสิทธิ์ปิดไมโครโฟนหรือทริกเกอร์ของ Assistant
- เมื่อมีการจัดเก็บไฟล์เสียงที่บันทึกไว้ ผู้ใช้ควรมีสิทธิ์เข้าถึง ตรวจสอบ และ ลบไฟล์ที่บันทึกไว้ได้ทุกเมื่อ
การปรับปรุงฟังก์ชันการทำงานสำหรับ Android 10
ผู้ช่วยไม่บล็อกกัน
ใน Android 9 หรือต่ำกว่า เมื่อมี Assistant 2 ตัวที่เปิดอยู่ตลอดเวลาในอุปกรณ์ จะมีเพียงตัวเดียวเท่านั้นที่ฟังคำสั่งเริ่มต้นได้ จึงจำเป็นต้องสลับไปมาระหว่าง Assistant ทั้ง 2 ตัว ใน Android 10 ผู้ช่วยเริ่มต้นจะฟังพร้อมกับผู้ช่วยรายอื่นได้ ซึ่งจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นยิ่งขึ้นเมื่อใช้ทั้ง 2 ผู้ช่วย
แอปที่เปิดไมโครโฟนไว้
เมื่อแอปอย่าง Shazam หรือ Waze เปิดไมโครโฟนไว้ Assistant เริ่มต้นจะยังคงฟัง คำสั่งให้ดำเนินการได้
สำหรับแอป Assistant ที่ไม่ใช่ค่าเริ่มต้น ลักษณะการทำงานใน Android 10 จะไม่เปลี่ยนแปลง
ตัวอย่างการใช้งาน HAL เสียง
ตัวอย่างการใช้งาน HAL เสียงที่เป็นไปตามหลักเกณฑ์ในเอกสารนี้จะอยู่ใน AOSP