ผู้ผลิตอุปกรณ์ต้องระบุโปรไฟล์พลังงานส่วนประกอบใน /frameworks/base/core/res/res/xml/power_profile.xml
ในการกำหนดค่าโปรไฟล์พลังงาน ให้ใช้ฮาร์ดแวร์ที่วัดพลังงานที่อุปกรณ์ใช้และดำเนินการต่างๆ ที่ต้องการข้อมูล วัดการใช้พลังงานระหว่างการดำเนินการเหล่านั้นและคำนวณค่าต่างๆ (ซึ่งมาจากความแตกต่างจากการใช้พลังงานพื้นฐานอื่นๆ ตามความเหมาะสม)
เนื่องจากเป้าหมายของโปรไฟล์พลังงานคือการประมาณการแบตเตอรี่หมดอย่างเหมาะสม ค่าโปรไฟล์พลังงานจะแสดงเป็นกระแสไฟ (แอมป์) เฟรมเวิร์กของ Android จะคูณกระแสตามเวลาที่ระบบย่อยทำงานอยู่และคำนวณค่า mAh ซึ่งใช้ประเมินปริมาณแบตเตอรี่ที่แอปพลิเคชัน/ระบบย่อยใช้ไป
อุปกรณ์ที่มีตัวควบคุมบลูทูธ โมเด็ม และ Wi-Fi ที่ใช้ Android 7.0 ขึ้นไปสามารถให้ค่าพลังงานเพิ่มเติมที่ได้รับจากข้อมูลชิปเซ็ต
อุปกรณ์ที่มีซีพียูต่างกัน
โปรไฟล์พลังงานสำหรับอุปกรณ์ที่มีแกน CPU ของสถาปัตยกรรมต่างกันต้องมีฟิลด์เพิ่มเติมต่อไปนี้:
- จำนวน CPU ทั้งหมดสำหรับแต่ละคลัสเตอร์ (แสดงใน cpu.clusters.cores)
- ความเร็ว CPU รองรับโดยแต่ละคลัสเตอร์
- การใช้พลังงาน CPU ที่ใช้งานอยู่สำหรับแต่ละคลัสเตอร์
หากต้องการแยกความแตกต่างระหว่างการใช้พลังงานของ CPU ที่ใช้งานอยู่และความเร็วของ CPU ที่สนับสนุนสำหรับคลัสเตอร์ ให้ผนวกหมายเลขคลัสเตอร์เข้ากับชื่อของอาร์เรย์ หมายเลขคลัสเตอร์ถูกกำหนดตามลำดับของคอร์ CPU ในแผนผังอุปกรณ์เคอร์เนล ตัวอย่างเช่น ในสถาปัตยกรรมที่ต่างกันซึ่งมีคลัสเตอร์สอง (2) คอร์ที่มีคอร์สี่ (4) คอร์:
- cluster0 ประกอบด้วย cpu0-3
- คลัสเตอร์ 1 ประกอบด้วย cpu4-7
กรอบงาน Android ใช้หมายเลขหลักของ CPU เหล่านี้เมื่ออ่านสถิติจากไฟล์ sysfs
ใน: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
ตัวอย่างของคลัสเตอร์ CPU และความเร็ว:
<array name="cpu.active.cluster0"> <value>200</value> <value>300</value> <value>400</value> </array> <array name="cpu.speeds.cluster0"> <value>600000</value> <value>800000</value> <value>1200000</value> </array> <array name="cpu.active.cluster1"> <value>400</value> <value>500</value> <value>600</value> </array> <array name="cpu.speeds.cluster1"> <value>800000</value> <value>1200000</value> <value>1400000</value> </array>
ค่าพลัง
ตารางต่อไปนี้อธิบายการตั้งค่าค่าพลังงานที่ใช้ได้ ในการดูไฟล์ตัวอย่างใน AOSP โปรดดู ที่ power_profile.xml
ชื่อ | คำอธิบาย | ตัวอย่างค่า | หมายเหตุ |
---|---|---|---|
Ambient.on | พลังงานเพิ่มเติมที่ใช้เมื่อหน้าจออยู่ในโหมด doze/ambient/always-on แทนการปิด | ประมาณ 100 mA | - |
screen.on | พลังงานเพิ่มเติมที่ใช้เมื่อเปิดหน้าจอที่ความสว่างขั้นต่ำ | 200 mA | รวมตัวควบคุมแบบสัมผัสและไฟแบ็คไลท์ของจอแสดงผล ที่ความสว่าง 0 ไม่ใช่ขั้นต่ำของ Android ซึ่งมีแนวโน้มว่าจะอยู่ที่ 10 หรือ 20% |
screen.full | พลังงานเพิ่มเติมที่ใช้เมื่อหน้าจอมีความสว่างสูงสุด เมื่อเทียบกับหน้าจอที่ความสว่างต่ำสุด | 100 mA-300 mA | ส่วนหนึ่งของค่านี้ (ขึ้นอยู่กับความสว่างของหน้าจอ) จะถูกเพิ่มลงในค่า screen.on เพื่อคำนวณการใช้พลังงานของหน้าจอ |
wifi.on | พลังงานเพิ่มเติมที่ใช้เมื่อเปิด Wi-Fi แต่ไม่ได้รับ ส่ง หรือสแกน | 2 mA | - |
wifi.active | พลังงานเพิ่มเติมที่ใช้เมื่อส่งหรือรับผ่าน Wi-Fi | 31 mA | - |
wifi.scan | พลังงานเพิ่มเติมที่ใช้เมื่อ Wi-Fi กำลังสแกนหาจุดเข้าใช้งาน | 100 mA | - |
เสียง | พลังงานเพิ่มเติมที่ใช้เมื่อถอดรหัส/เข้ารหัสเสียงผ่าน DSP | ประมาณ 10 mA | ใช้สำหรับเสียง DSP |
วีดีโอ | พลังงานเพิ่มเติมที่ใช้เมื่อถอดรหัสวิดีโอผ่าน DSP | ประมาณ 50 mA | ใช้สำหรับวิดีโอ DSP |
กล้อง.avg | การใช้พลังงานโดยเฉลี่ยของระบบย่อยของกล้องสำหรับแอปพลิเคชันกล้องทั่วไป | 600 mA | มีวัตถุประสงค์เพื่อใช้เป็นค่าประมาณคร่าวๆ สำหรับแอปพลิเคชันที่เรียกใช้การแสดงตัวอย่างและถ่ายภาพความละเอียดเต็มประมาณ 10 ภาพต่อนาที |
กล้อง.ไฟฉาย | กำลังเฉลี่ยที่โมดูลแฟลชของกล้องใช้เมื่อเปิดเครื่อง | 200 mA | - |
gps.signalqualitybased | พลังงานเพิ่มเติมที่ใช้โดย GPS ตามความแรงของสัญญาณ นี่คือรายการที่มีหลายค่า หนึ่งค่าต่อความแรงของสัญญาณ จากอ่อนสุดไปหาเข้มที่สุด | 30 mA, 10 mA | - |
gps.on | พลังงานเพิ่มเติมที่ใช้เมื่อ GPS กำลังรับสัญญาณ | 50 mA | - |
กัมมันตรังสี | พลังงานเพิ่มเติมที่ใช้เมื่อมีการส่ง/รับวิทยุเคลื่อนที่ | 100 mA-300 mA | - |
radio.scanning | พลังงานเพิ่มเติมที่ใช้เมื่อวิทยุมือถือทำการเพจหอคอย | 1.2 mA | - |
radio.on | พลังงานเพิ่มเติมที่ใช้เมื่อเปิดวิทยุมือถือ นี่คือรายการที่มีหลายค่า หนึ่งค่าต่อความแรงของสัญญาณ (ไม่มีสัญญาณ อ่อน ปานกลาง แรง) | 1.2 mA | วิทยุบางรุ่นจะเพิ่มพลังเมื่อค้นหาเสาสัญญาณและตรวจไม่พบสัญญาณ ค่าจะเท่ากันหรือลดลงได้เมื่อความแรงของสัญญาณเพิ่มขึ้น หากคุณระบุเพียงค่าเดียว ค่าเดียวกันจะถูกใช้สำหรับจุดแข็งทั้งหมด หากคุณระบุค่าสองค่า ค่าแรกจะใช้สำหรับการไม่มีสัญญาณ ค่าที่สองจะใช้สำหรับค่าความแรงอื่นๆ ทั้งหมด และอื่นๆ |
Bluetooth.controller.idle | กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Bluetooth เมื่อไม่ได้ใช้งาน | - | ค่าเหล่านี้ไม่ได้ประมาณการ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหรือส่งหลายสถานะ ค่าเฉลี่ยของรัฐเหล่านั้นจะถูกนำมา นอกจากนี้ ขณะนี้ระบบได้รวบรวมข้อมูลสำหรับ การสแกนพลังงานต่ำ (LE) และบลูทูธ Android 7.0 และใหม่กว่าจะไม่ใช้ค่าพลังงาน Bluetooth สำหรับ Bluetooth.active อีกต่อไป (ใช้เมื่อเล่นเสียงผ่าน Bluetooth A2DP) และ Bluetooth.on (ใช้เมื่อ Bluetooth เปิดอยู่แต่ไม่ได้ใช้งาน) |
bluetooth.controller.rx | กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Bluetooth เมื่อรับ | - | |
bluetooth.controller.tx | กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Bluetooth เมื่อส่งสัญญาณ | - | |
Bluetooth.controller.voltage | แรงดันใช้งานเฉลี่ย (mV) ของคอนโทรลเลอร์ Bluetooth | - | |
โมเด็ม.controller.sleep | กระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่ออยู่ในโหมดสลีป | 0 mA | ค่าเหล่านี้ไม่ได้ประมาณการ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหลายสถานะ ค่าเฉลี่ยของสถานะเหล่านั้นจะถูกนำมา หากมีสถานะการส่งหลายสถานะ การระบุค่าสำหรับแต่ละสถานะการส่งจะได้รับการสนับสนุนโดยเริ่มใน Android 9 |
modem.controller.idle | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อไม่ได้ใช้งาน | - | |
modem.controller.rx | กระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อรับ | - | |
โมเด็ม.controller.tx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อส่งสัญญาณที่ระดับพลังงาน RF ที่ต่างกัน นี่คือรายการแบบหลายค่าที่มีหนึ่งค่าต่อระดับกำลังส่ง | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
โมเด็ม.controller.voltage | แรงดันใช้งานเฉลี่ย (mV) ของตัวควบคุมโมเด็ม | - | |
wifi.controller.idle | กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Wi-Fi เมื่อไม่ได้ใช้งาน | - | ค่าเหล่านี้ไม่ได้ประมาณการ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหรือส่งหลายสถานะ ค่าเฉลี่ยของรัฐเหล่านั้นจะถูกนำมา |
wifi.controller.rx | การดึงกระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Wi-Fi เมื่อรับ | - | |
wifi.controller.tx | กระแสไฟเฉลี่ย (mA) ของคอนโทรลเลอร์ Wi-Fi เมื่อส่งสัญญาณ | - | |
wifi.controller.voltage | แรงดันใช้งานเฉลี่ย (mV) ของคอนโทรลเลอร์ Wi-Fi | - | |
cpu.speeds | นี่คือรายการแบบหลายค่าที่แสดงรายการความเร็ว CPU ที่เป็นไปได้แต่ละรายการในหน่วย KHz | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 150,000 KHz | จำนวนและลำดับของรายการต้องสอดคล้องกับรายการ mA ใน cpu.active |
cpu.idle | กำลังทั้งหมดที่ใช้โดยระบบเมื่อ CPU (และ SoC) อยู่ในสถานะระงับระบบ | 3 mA | - |
cpu.awake | พลังงานเพิ่มเติมที่ใช้เมื่อ CPU อยู่ในสถานะไม่ได้ใช้งานการตั้งเวลา (เคอร์เนลไม่ได้ใช้งานลูป); ระบบไม่อยู่ในสถานะระงับระบบ | 50 mA | แพลตฟอร์มของคุณอาจมีสถานะไม่ได้ใช้งานมากกว่าหนึ่งสถานะโดยมีระดับการใช้พลังงานต่างกัน เลือกสถานะไม่ได้ใช้งานที่เป็นตัวแทนสำหรับช่วงเวลาที่ไม่ได้ใช้งานตัวกำหนดตารางเวลานานขึ้น (หลายมิลลิวินาที) ตรวจสอบกราฟกำลังบนอุปกรณ์การวัดของคุณ และเลือกตัวอย่างที่ CPU ใช้พลังงานน้อยที่สุด โดยทิ้งตัวอย่างที่สูงขึ้นเมื่อ CPU ออกจากรอบเดินเบา |
cpu.active | พลังงานเพิ่มเติมที่ CPU ใช้เมื่อทำงานด้วยความเร็วที่ต่างกัน | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | ค่าหมายถึงกำลังที่ใช้โดยราง CPU เมื่อทำงานที่ความเร็วต่างกัน ตั้งค่าความเร็วสูงสุดในเคอร์เนลเป็นความเร็วที่อนุญาตแต่ละรายการและตรึง CPU ไว้ที่ความเร็วนั้น จำนวนและลำดับของรายการสอดคล้องกับจำนวนและลำดับของรายการใน cpu.speeds |
cpu.clusters.cores | จำนวนคอร์ที่แต่ละคลัสเตอร์ CPU มี | 4, 2 | จำเป็นสำหรับอุปกรณ์ที่มี สถาปัตยกรรม CPU ต่างกัน เท่านั้น จำนวนรายการและลำดับควรตรงกับจำนวนรายการคลัสเตอร์สำหรับ cpu.active และ cpu.speeds รายการแรกแสดงจำนวนแกน CPU ในคลัสเตอร์0 รายการที่สองแสดงจำนวนแกน CPU ในคลัสเตอร์1 และอื่นๆ |
แบตเตอรี่ความจุ | ความจุแบตเตอรี่รวมเป็น mAh | 3000 mAh | - |
การสแกนพลังงานต่ำ (LE) และบลูทูธ
สำหรับอุปกรณ์ที่ใช้ Android 7.0 ระบบจะรวบรวมข้อมูลสำหรับการสแกนพลังงานต่ำ (LE) และการรับส่งข้อมูลเครือข่ายบลูทูธ (เช่น RFCOMM และ L2CAP) และเชื่อมโยงกิจกรรมเหล่านี้กับแอปพลิเคชันเริ่มต้น การสแกนบลูทูธจะเชื่อมโยงกับแอปพลิเคชันที่เริ่มการสแกน แต่การสแกนแบบกลุ่มไม่ได้เชื่อมโยง (และจะเชื่อมโยงกับแอปพลิเคชัน Bluetooth แทน) สำหรับการสแกนแอปพลิเคชันเป็นเวลา N มิลลิวินาที ค่าใช้จ่ายในการสแกนคือ N มิลลิวินาทีของเวลา rx และ N มิลลิวินาทีของเวลา tx; เวลาตัวควบคุมที่เหลือทั้งหมดถูกกำหนดให้กับการรับส่งข้อมูลเครือข่ายหรือแอปพลิเคชัน Bluetooth