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

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 เสียงควรแสดงและป้อนโปรไฟล์ที่เจาะจงสำหรับการจับคําสั่งให้ดำเนินการที่ระบุโดย Flag 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