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

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