ข้อมูลการใช้แบตเตอรี่ได้มาจากสถิติการใช้แบตเตอรี่และค่าโปรไฟล์พลังงาน
สถิติการใช้งานแบตเตอรี่
เฟรมเวิร์กจะกำหนดสถิติการใช้แบตเตอรี่โดยอัตโนมัติด้วยการติดตามระยะเวลาที่คอมโพเนนต์ของอุปกรณ์ อยู่ในสถานะต่างๆ เมื่อคอมโพเนนต์ (ชิปเซ็ต Wi-Fi, วิทยุเซลลูลาร์, บลูทูธ, GPS, จอแสดงผล, CPU) เปลี่ยนสถานะ (ปิด/เปิด, ว่าง/เต็มกำลัง, ความสว่างต่ำ/สูง ฯลฯ) บริการควบคุม จะรายงานไปยังบริการ BatteryStats ของเฟรมเวิร์ก BatteryStats จะรวบรวมข้อมูลเมื่อเวลาผ่านไป และจัดเก็บไว้เพื่อใช้ในการรีบูต บริการนี้ไม่ได้ติดตามการดึงกระแสไฟฟ้าของแบตเตอรี่โดยตรง แต่จะรวบรวมข้อมูลเวลาที่ใช้ในการประมาณการใช้แบตเตอรี่ ของคอมโพเนนต์ต่างๆ แทน
เฟรมเวิร์กจะรวบรวมสถิติโดยใช้วิธีการต่อไปนี้
- ดัน บริการที่รับรู้ถึงการเปลี่ยนแปลงคอมโพเนนต์จะส่งการเปลี่ยนแปลงสถานะไปยังบริการ BatteryStats
- ดึง สำหรับคอมโพเนนต์ต่างๆ เช่น การใช้งาน CPU โดยแอป เฟรมเวิร์กจะดึงข้อมูลโดยอัตโนมัติ ณ จุดเปลี่ยน (เช่น การเริ่มหรือหยุดกิจกรรม) เพื่อถ่ายภาพรวม
การใช้ทรัพยากรจะเชื่อมโยงกับแอปพลิเคชันที่ใช้ทรัพยากร เมื่อแอปพลิเคชันหลายรายการใช้ทรัพยากรพร้อมกัน (เช่น WakeLock ที่ป้องกันไม่ให้ระบบ ระงับ) เฟรมเวิร์กจะกระจายการใช้ทรัพยากรไปยังแอปพลิเคชันเหล่านั้น แม้ว่าจะไม่จำเป็นต้อง เท่ากันก็ตาม
เฟรมเวิร์กจะส่งสถิติทุกๆ 30 นาทีโดยประมาณเพื่อไม่ให้สูญเสียสถิติการใช้งานสำหรับเหตุการณ์การปิดระบบ ซึ่งอาจบ่งชี้ถึงปัญหาการใช้พลังงานแบตเตอรี่ (เช่น การปิดระบบเกิดขึ้นเนื่องจากแบตเตอรี่เหลือ 0%)
เฟรมเวิร์กจะจัดการสถิติการใช้แบตเตอรี่ทั้งหมด และไม่จำเป็นต้องมีการแก้ไข OEM
ค่าโปรไฟล์ประสิทธิภาพ
ข้อควรระวัง: ผู้ผลิตอุปกรณ์ต้องระบุโปรไฟล์การใช้พลังงานของคอมโพเนนต์ ซึ่งกำหนดค่าการใช้พลังงานปัจจุบันสำหรับคอมโพเนนต์และการใช้แบตเตอรี่โดยประมาณ ที่เกิดจากคอมโพเนนต์เมื่อเวลาผ่านไป โปรไฟล์นี้กำหนดไว้ใน platform/frameworks/base/core/res/res/xml/power_profile.xml ดูคำแนะนำเกี่ยวกับการตั้งค่าเหล่านี้ได้ที่ค่าพลังงาน
ภายในโปรไฟล์พลังงาน จะมีการระบุการใช้พลังงานเป็นมิลลิแอมป์ (mA) ของกระแสไฟฟ้าที่ แรงดันไฟฟ้าที่กำหนด และอาจเป็นค่าเศษส่วนที่ระบุเป็นไมโครแอมป์ (uA) ค่าควรเป็น mA ที่ใช้ในแบตเตอรี่ และไม่ใช่ค่าที่ใช้กับรางจ่ายไฟที่ไม่สอดคล้องกับ กระแสที่ใช้จากแบตเตอรี่
เช่น โปรไฟล์การใช้พลังงานของจอแสดงผลจะระบุ mA ของกระแสไฟฟ้าที่จำเป็นต่อการเปิดจอแสดงผล ที่ความสว่างต่ำสุดและความสว่างสูงสุด หากต้องการพิจารณาต้นทุนด้านพลังงาน (เช่น แบตเตอรี่ที่ส่วนประกอบจอแสดงผลใช้) ของการเปิดจอแสดงผลไว้ เฟรมเวิร์กจะติดตามเวลาที่ใช้ในแต่ละระดับความสว่าง จากนั้นจะคูณช่วงเวลาเหล่านั้นด้วยต้นทุนความสว่างของจอแสดงผลที่ประมาณค่าไว้
เฟรมเวิร์กยังคูณเวลา CPU สำหรับแต่ละแอปพลิเคชันด้วย mA ที่จำเป็นในการเรียกใช้ CPU ที่ความเร็วที่เฉพาะเจาะจง การคำนวณนี้จะสร้างการจัดอันดับเปรียบเทียบว่าแอปพลิเคชันใช้แบตเตอรี่มากน้อยเพียงใดโดยการเรียกใช้โค้ด CPU (เวลาที่แอปเป็นแอปที่ทำงานอยู่เบื้องหน้าและเวลาทั้งหมดรวมถึงกิจกรรมในเบื้องหลังจะรายงานแยกกัน)