เพื่อให้มั่นใจว่าระบบจะมีความเสถียรและสามารถเข้าสู่สถานะพลังงานต่ำ เช่น Suspend-to-RAM (S2R) หรือ Suspend-to-Disk (S2D) การจัดการทรัพยากรเสียงอย่างเหมาะสมในระหว่างการเปลี่ยนพลังงานจึงเป็นสิ่งสำคัญ
แอปอาจไม่ปล่อยสตรีมอินพุตหรือเอาต์พุตเสียงเสมอไปเมื่อระบบเริ่มระงับ สตรีมเสียงที่ใช้งานอยู่อาจป้องกันไม่ให้ ระบบย่อยเสียงและฮาร์ดแวร์พื้นฐานเข้าสู่โหมดว่าง ซึ่งอาจบล็อก ระบบวงจรรวมบนชิป (SoC) ไม่ให้เข้าสู่โหมดสลีปลึก ซึ่งส่งผลให้การพยายามระงับล้มเหลว และมีการใช้พลังงานเพิ่มขึ้น
OEM ต้องใช้กลไกการสำรองที่แข็งแกร่งภายในเลเยอร์การแยกฮาร์ดแวร์เสียง (HAL) เพื่อจัดการสตรีมเสียงที่ใช้งานอยู่ระหว่าง การเปลี่ยนสถานะเป็นระงับ ซึ่งเป็นสิ่งจำเป็นสำหรับความเสถียรของแพลตฟอร์ม ไม่ว่าแอปจะมีลักษณะการทำงานอย่างไร
แอปควรจัดการทรัพยากรเสียงอย่างถูกต้อง แต่ระบบ ไม่สามารถใช้การจัดการนี้สำหรับการเปลี่ยนสถานะพลังงานพื้นฐานได้ HAL เสียงเป็น เลเยอร์ที่เหมาะสมในการบังคับใช้การปิดใช้งานทรัพยากรเพื่อให้มั่นใจว่า ระบบจะเข้าสู่สถานะระงับได้ เราขอแนะนำให้ใช้วิธีนี้เพื่อ การจัดการพลังงานที่มีประสิทธิภาพ
ใช้การจัดการพลังงาน
หากต้องการใช้การจัดการพลังงานที่มีประสิทธิภาพใน Audio HAL ให้ทำตามขั้นตอนต่อไปนี้
ตรวจหาการเปลี่ยนแปลงสถานะการเปิด/ปิดระบบ โดยเฉพาะการเปลี่ยนไปใช้โหมดพัก
เมื่อระบบกำลังเตรียมหยุดทำงาน ให้แทรกแซงหากสตรีมเสียง (ทั้งอินพุตและเอาต์พุต) ยังคงทำงานอยู่
- ปล่อยสตรีมเอาต์พุตของฮาร์ดแวร์และทิ้งข้อมูลขาเข้าจากเฟรมเวิร์กเสียง
- ปล่อยสตรีมอินพุตของฮาร์ดแวร์และส่งเสียงเงียบไปยังเฟรมเวิร์ก
การดำเนินการระดับ HAL นี้ช่วยให้ฮาร์ดแวร์เสียงสามารถเข้าสู่สถานะไม่มีการใช้งานได้ ทำให้ระบบระงับการทำงานได้สำเร็จ แม้ว่าแอปจะยังไม่ได้ปล่อยทรัพยากรเสียงก็ตาม
เมื่อระบบกลับมาทำงานต่อจากการหยุดทำงาน ให้คืนค่าระบบย่อยเสียงเป็น สถานะที่ใช้งานอยู่ ซึ่งรวมถึงการยกเลิกการปิดเสียงสตรีมเอาต์พุตที่ปิดเสียงไว้ก่อนหน้านี้ และการเปิดใช้งานสตรีมอินพุตอีกครั้ง เพื่อให้แอปเล่นเสียงและ บันทึกเสียงต่อไปได้
ผลกระทบต่อแอป
การจัดการทรัพยากรเสียงที่ระดับ HAL ระหว่างการระงับจะส่งผลต่อแอปในลักษณะต่อไปนี้
- การระงับที่โปร่งใส: สำหรับแอปที่ใช้ไมโครโฟน ระบบจะระงับ (เข้าสู่ S2D หรือ S2R) อย่างโปร่งใส
- ปิดเสียงระหว่างการเปลี่ยนสถานะ: หลังจากเริ่มการเปลี่ยนสถานะเป็นถูกระงับ ระบบจะปิดเสียงสตรีมที่ใช้งานอยู่ที่ HAL แอปจะยังทำงานต่อไป แต่จะ รับเฉพาะเสียงที่ปิดอยู่ระหว่างการระงับ
- เล่นต่อโดยอัตโนมัติ: เมื่อระบบกลับมาทำงานอีกครั้ง แอปจะเริ่มรับหรือส่งข้อมูลเสียงแบบเรียลไทม์อีกครั้งโดยอัตโนมัติโดยไม่ต้องดำเนินการใดๆ เพื่อขอรับหรือกู้คืนทรัพยากร