การจับภาพพร้อมกัน

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