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

Android 10 ปรับปรุงประสบการณ์ผู้ใช้ที่ต้องใช้การบันทึกเสียงที่ใช้งานอยู่มากกว่าหนึ่งรายการพร้อมกัน ตัวอย่างเช่น หากผู้ใช้ต้องการควบคุมการโทร VoIP หรือเครื่องบันทึกวิดีโอด้วยคำสั่งเสียงที่ให้บริการโดยบริการการเข้าถึง

กรอบงานเสียงใช้นโยบายที่อนุญาตให้เฉพาะบางแอปที่ได้รับสิทธิพิเศษสามารถจับภาพพร้อมกับแอปปกติได้

นโยบายการทำงานพร้อมกันจะดำเนินการโดยปิดเสียงที่บันทึกไว้แทนที่จะป้องกันไม่ให้แอปพลิเคชันเริ่มจับภาพ ซึ่งช่วยให้เฟรมเวิร์กสามารถจัดการกับการเปลี่ยนแปลงจำนวนและประเภทของกรณีการใช้งานการจับภาพที่ใช้งานอยู่แบบไดนามิก โดยไม่ต้องป้องกันไม่ให้แอปเริ่มจับภาพในกรณีที่สามารถกู้คืนการเข้าถึงไมโครโฟนได้อย่างสมบูรณ์หลังจากที่แอปอื่นจับภาพเสร็จ

ผลที่ตามมาสำหรับ Audio HAL และระบบย่อยของเสียงคือต้องรองรับสตรีมอินพุตที่ทำงานอยู่หลายรายการพร้อมกัน แม้ว่าในบางกรณี สตรีมเพียงสตรีมเดียวเท่านั้นที่ให้เสียงที่ไม่ปิดเสียงแก่ไคลเอ็นต์ที่ใช้งานอยู่

ข้อกำหนด CDD

ดูข้อกำหนดสำหรับการสนับสนุนการจับภาพพร้อมกันใน CDD

บันทึกสถานการณ์จากเสียง HAL

สถานการณ์จำลองการจับภาพพร้อมกันอาจส่งผลให้เกิดสถานการณ์ที่แตกต่างกันในแง่ของจำนวนสตรีมอินพุตที่ใช้งานอยู่ การเลือกอุปกรณ์อินพุต หรือการกำหนดค่าก่อนการประมวลผล

ภาวะพร้อมกันอาจเกิดขึ้นระหว่างสิ่งต่อไปนี้:

  • อินพุตสตรีมหลายรายการจากตัวประมวลผลแอปพลิเคชัน (AP)
  • อินพุตสตรีมและการโทรด้วยเสียง
  • อินพุตสตรีมและ DSP เสียงที่ใช้การตรวจจับคำสั่งให้ดำเนินการที่ใช้พลังงานต่ำ

กิจกรรมพร้อมกันของสตรีมอินพุต AP

ไฟล์การกำหนดค่านโยบายเสียง audio_policy_configuration.xml ถูกใช้โดยเฟรมเวิร์กเสียงเพื่อกำหนดจำนวนอินพุตสตรีมที่สามารถเปิดและใช้งานพร้อมกันได้

อย่างน้อยที่สุด เสียง HAL ต้องสนับสนุน อย่างน้อยหนึ่งอินสแตนซ์ของโปรไฟล์อินพุตแต่ละ รายการ ( mixPort ของบทบาท sink ) ที่แสดงอยู่ใน ไฟล์การกำหนดค่าที่เปิดอยู่และใช้งานอยู่

การเลือกอุปกรณ์

เมื่อเชื่อมต่อไคลเอ็นต์ที่ใช้งานอยู่หลายเครื่องเข้ากับสตรีมอินพุต HAL เดียวกัน เฟรมเวิร์กจะเลือกอุปกรณ์ที่เหมาะสมสำหรับสตรีมอินพุตนี้ตามลำดับความสำคัญของกรณีการใช้งาน

เมื่อมีสตรีมอินพุตหลายรายการ แต่ละสตรีมสามารถเลือกอุปกรณ์ที่แตกต่างกันได้

หากเทคโนโลยีเข้ากันได้ ขอแนะนำว่าระบบเสียง HAL และระบบย่อยอนุญาตให้สตรีมที่แตกต่างกันเพื่อจับภาพจากอุปกรณ์ต่างๆ เช่น ชุดหูฟัง Bluetooth และไมโครโฟนในตัว

หากมีความเข้ากันไม่ได้ (เช่น อุปกรณ์สองเครื่องใช้อินเทอร์เฟซเสียงดิจิทัลหรือส่วนหลังร่วมกัน) เสียง HAL จะต้องเลือกว่าสตรีมใดจะควบคุมการเลือกอุปกรณ์

ในกรณีนี้:

  • สถานะผลลัพธ์ต้องสอดคล้องกันและเสนอการเลือกอุปกรณ์แบบเดียวกันเมื่อเกิดสถานการณ์เดียวกันซ้ำ
  • เมื่อสถานะการทำงานพร้อมกันสิ้นสุดลง สตรีมที่ใช้งานอยู่ที่เหลือจะต้องกำหนดเส้นทางไปยังอุปกรณ์ที่ร้องขอในตอนแรกในสตรีมนี้

หากลำดับความสำคัญถูกกำหนดโดย 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 of 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
  • เมื่อจัดเก็บการบันทึกเสียง ผู้ใช้ควรสามารถเข้าถึง ตรวจสอบ และลบการบันทึกเสียงได้ตลอดเวลา

การปรับปรุงการทำงานสำหรับ Android 10

ผู้ช่วยไม่ปิดกั้น

ใน Android 9 หรือต่ำกว่า เมื่อมีผู้ช่วยที่ทำงานตลอดเวลาสองคนบนอุปกรณ์ จะมีเพียงคนเดียวเท่านั้นที่สามารถฟังคำสั่งให้ดำเนินการได้ ดังนั้นจึงจำเป็นต้องสลับไปมาระหว่างผู้ช่วยสองคน ใน Android 10 ผู้ช่วยเริ่มต้นสามารถฟังพร้อมกับผู้ช่วยอื่นพร้อมกันได้ ส่งผลให้ผู้ใช้ได้รับประสบการณ์ที่ราบรื่นยิ่งขึ้นด้วยผู้ช่วยทั้งสอง

แอปที่ถือไมค์เปิดอยู่

เมื่อแอปอย่าง Shazam หรือ Waze เปิดไมค์ค้างไว้ ผู้ช่วยเริ่มต้นจะยังคงฟังคำสั่งให้ดำเนินการ

สำหรับแอป Assistant ที่ไม่ใช่ค่าเริ่มต้น การทำงานสำหรับ Android 10 จะไม่มีการเปลี่ยนแปลง

ตัวอย่างการใช้งานเสียง HAL

ตัวอย่างของการใช้เสียง HAL ที่สอดคล้องกับแนวทางปฏิบัติในเอกสารนี้สามารถพบได้ใน AOSP