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