ผู้ผลิตอุปกรณ์ต้องจัดเตรียมโปรไฟล์พลังงานส่วนประกอบใน /frameworks/base/core/res/res/xml/power_profile.xml
ในการกำหนดค่าสำหรับโปรไฟล์พลังงาน ให้ใช้ฮาร์ดแวร์ที่วัดพลังงานที่อุปกรณ์ใช้ และดำเนินการต่างๆ ตามข้อมูลที่จำเป็น วัดการใช้พลังงานระหว่างการดำเนินการเหล่านั้นและคำนวณค่า (ได้มาจากความแตกต่างจากการใช้พลังงานพื้นฐานอื่นๆ ตามความเหมาะสม)
เนื่องจากเป้าหมายของโปรไฟล์พลังงานคือการประเมินการสิ้นเปลืองแบตเตอรี่อย่างเหมาะสม ค่าโปรไฟล์พลังงานจึงถูกกำหนดเป็นกระแส (แอมป์) เฟรมเวิร์ก Android จะคูณกระแสตามเวลาที่ระบบย่อยทำงานอยู่ และคำนวณค่า mAh ซึ่งจากนั้นจะใช้ในการประมาณปริมาณแบตเตอรี่ที่แอปหรือระบบย่อยใช้
อุปกรณ์ที่มีบลูทูธ โมเด็ม และตัวควบคุม Wi-Fi ที่ใช้ Android 7.0 ขึ้นไปสามารถให้ค่าพลังงานเพิ่มเติมที่ได้รับจากข้อมูลชิปเซ็ต
อุปกรณ์ที่มี CPU ต่างกัน
โปรไฟล์พลังงานสำหรับอุปกรณ์ที่มีคอร์ CPU ของสถาปัตยกรรมต่างกันจะต้องมีฟิลด์เพิ่มเติมต่อไปนี้:
- จำนวน CPU ทั้งหมดสำหรับแต่ละคลัสเตอร์ (แสดงเป็น cpu.clusters.cores)
- ความเร็ว CPU ที่แต่ละคลัสเตอร์รองรับ
- การใช้พลังงาน CPU ที่ใช้งานสำหรับแต่ละคลัสเตอร์
หากต้องการแยกความแตกต่างระหว่างการใช้พลังงานของ CPU ที่ใช้งานอยู่และความเร็วของ CPU ที่รองรับสำหรับคลัสเตอร์ ให้เพิ่มหมายเลขคลัสเตอร์ต่อท้ายชื่อของอาร์เรย์ หมายเลขคลัสเตอร์ถูกกำหนดตามลำดับแกน CPU ในแผนผังอุปกรณ์เคอร์เนล ตัวอย่างเช่น ในสถาปัตยกรรมที่แตกต่างกันซึ่งมีสอง (2) คลัสเตอร์ที่มีสี่ (4) คอร์:
- คลัสเตอร์0ประกอบด้วย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
ชื่อ | คำอธิบาย | ค่าตัวอย่าง | หมายเหตุ |
---|---|---|---|
โดยรอบ | พลังงานเพิ่มเติมที่ใช้เมื่อหน้าจออยู่ในโหมดหลับใน/โดยรอบ/เปิดตลอดเวลา แทนที่จะปิด | ประมาณ 100 มิลลิแอมป์ | - |
หน้าจอเปิด | พลังงานเพิ่มเติมที่ใช้เมื่อเปิดหน้าจอที่ความสว่างขั้นต่ำ | 200 มิลลิแอมป์ | รวมถึงตัวควบคุมแบบสัมผัสและไฟแบ็คไลท์ของจอแสดงผล ที่ความสว่าง 0 ไม่ใช่ขั้นต่ำของ Android ซึ่งมีแนวโน้มว่าจะอยู่ที่ 10 หรือ 20% |
หน้าจอ.เต็ม | พลังงานเพิ่มเติมที่ใช้เมื่อหน้าจออยู่ที่ความสว่างสูงสุด เมื่อเทียบกับหน้าจอที่มีความสว่างขั้นต่ำ | 100 มิลลิแอมป์-300 มิลลิแอมป์ | เศษส่วนของค่านี้ (ขึ้นอยู่กับความสว่างของหน้าจอ) จะถูกเพิ่มให้กับค่า screen.on เพื่อคำนวณการใช้พลังงานของหน้าจอ |
wifi.เปิด | พลังงานเพิ่มเติมที่ใช้เมื่อเปิด Wi-Fi แต่ไม่ได้รับ ส่งสัญญาณ หรือสแกน | 2 มิลลิแอมป์ | - |
wifi.ใช้งานอยู่ | พลังงานเพิ่มเติมที่ใช้เมื่อส่งหรือรับผ่าน Wi-Fi | 31 มิลลิแอมป์ | - |
wifi.สแกน | พลังงานเพิ่มเติมที่ใช้เมื่อ Wi-Fi กำลังสแกนหาจุดเข้าใช้งาน | 100 มิลลิแอมป์ | - |
เสียง | พลังงานเพิ่มเติมที่ใช้เมื่อถอดรหัสเสียง/เข้ารหัสผ่าน DSP | ประมาณ 10 มิลลิแอมป์ | ใช้สำหรับเสียง DSP |
วิดีโอ | พลังงานเพิ่มเติมที่ใช้เมื่อถอดรหัสวิดีโอผ่าน DSP | ประมาณ 50 มิลลิแอมป์ | ใช้สำหรับวิดีโอ DSP |
กล้องเฉลี่ย | การใช้พลังงานโดยเฉลี่ยโดยระบบย่อยของกล้องสำหรับแอปกล้องทั่วไป | 600 มิลลิแอมป์ | มีวัตถุประสงค์เพื่อเป็นค่าประมาณคร่าวๆ สำหรับแอปที่เรียกใช้การแสดงตัวอย่างและถ่ายภาพความละเอียดเต็มประมาณ 10 ภาพต่อนาที |
กล้อง.ไฟฉาย | พลังงานเฉลี่ยที่ใช้โดยโมดูลแฟลชของกล้องเมื่อเปิดอยู่ | 200 มิลลิแอมป์ | - |
gps.สัญญาณคุณภาพตาม | พลังงานเพิ่มเติมที่ใช้โดย GPS ขึ้นอยู่กับความแรงของสัญญาณ นี่คือรายการหลายค่า หนึ่งรายการต่อความแรงของสัญญาณ จากอ่อนที่สุดไปแรงที่สุด | 30 มิลลิแอมป์, 10 มิลลิแอมป์ | - |
จีพีเอสเปิด | พลังงานเพิ่มเติมที่ใช้เมื่อ GPS กำลังรับสัญญาณ | 50 มิลลิแอมป์ | - |
กัมมันตรังสี | พลังงานเพิ่มเติมที่ใช้เมื่อมีการส่ง/รับวิทยุเซลลูล่าร์ | 100 มิลลิแอมป์-300 มิลลิแอมป์ | - |
วิทยุการสแกน | พลังงานเพิ่มเติมที่ใช้เมื่อวิทยุเซลลูลาร์กำลังเพจทาวเวอร์ | 1.2 มิลลิแอมป์ | - |
วิทยุเปิด | พลังงานเพิ่มเติมที่ใช้เมื่อวิทยุเซลลูลาร์เปิดอยู่ นี่คือรายการหลายค่า หนึ่งรายการต่อความแรงของสัญญาณ (ไม่มีสัญญาณ อ่อน ปานกลาง แรง) | 1.2 มิลลิแอมป์ | วิทยุบางรุ่นจะเพิ่มพลังเมื่อค้นหาหอเซลล์และตรวจไม่พบสัญญาณ ค่าอาจเท่าเดิมหรือลดลงตามความแรงของสัญญาณที่เพิ่มขึ้น หากคุณระบุเพียงค่าเดียว ระบบจะใช้ค่าเดียวกันสำหรับจุดแข็งทั้งหมด หากคุณระบุสองค่า ค่าแรกจะใช้สำหรับไม่มีสัญญาณ ค่าที่สองจะใช้สำหรับจุดแข็งอื่นๆ ทั้งหมด และอื่นๆ |
บลูทูธ.controller.idle | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุม Bluetooth เมื่อไม่ได้ใช้งาน | - | ค่าเหล่านี้ไม่ได้ประมาณไว้ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะรับหรือส่งหลายสถานะ ระบบจะใช้ค่าเฉลี่ยของสถานะเหล่านั้น นอกจากนี้ ขณะนี้ระบบยังรวบรวมข้อมูลสำหรับ การสแกนพลังงานต่ำ (LE) และบลูทูธ Android 7.0 และใหม่กว่าไม่ใช้ค่าพลังงาน Bluetooth สำหรับ bluetooth.active (ใช้เมื่อเล่นเสียงผ่าน Bluetooth A2DP) และ bluetooth.on (ใช้เมื่อเปิด Bluetooth แต่ไม่ได้ใช้งาน) อีกต่อไป |
บลูทูธ.controller.rx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุม Bluetooth เมื่อได้รับ | - | |
บลูทูธ.controller.tx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุม Bluetooth เมื่อส่งสัญญาณ | - | |
bluetooth.controller.แรงดันไฟฟ้า | แรงดันไฟฟ้าในการทำงานเฉลี่ย (mV) ของตัวควบคุม Bluetooth | - | |
โมเด็ม.controller.sleep | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่ออยู่ในโหมดสลีป | 0 มิลลิแอมป์ | ค่าเหล่านี้ไม่ได้ประมาณไว้ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะการรับหลายสถานะ ระบบจะใช้ค่าเฉลี่ยของสถานะเหล่านั้น หากมีสถานะการส่งหลายสถานะ รองรับการระบุค่าสำหรับสถานะการส่งแต่ละสถานะโดยเริ่มตั้งแต่ Android 9 |
โมเด็ม.controller.idle | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อไม่ได้ใช้งาน | - | |
โมเด็ม.controller.rx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อได้รับ | - | |
โมเด็ม.controller.tx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อส่งสัญญาณที่ระดับพลังงาน RF ต่างกัน นี่คือรายการหลายค่าโดยมีค่าหนึ่งค่าต่อระดับกำลังส่ง | 100 มิลลิแอมป์, 200 มิลลิแอมป์, 300 มิลลิแอมป์, 400 มิลลิแอมป์, 500 มิลลิแอมป์ | |
โมเด็ม.controller.แรงดันไฟฟ้า | แรงดันไฟฟ้าในการทำงานเฉลี่ย (mV) ของตัวควบคุมโมเด็ม | - | |
wifi.controller.idle | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุม Wi-Fi เมื่อไม่ได้ใช้งาน | - | ค่าเหล่านี้ไม่ได้ประมาณไว้ แต่นำมาจากแผ่นข้อมูลของคอนโทรลเลอร์ หากมีสถานะรับหรือส่งหลายสถานะ ระบบจะใช้ค่าเฉลี่ยของสถานะเหล่านั้น |
wifi.controller.rx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุม Wi-Fi เมื่อได้รับ | - | |
wifi.controller.tx | การดึงกระแสไฟเฉลี่ย (mA) ของตัวควบคุม Wi-Fi เมื่อส่งสัญญาณ | - | |
wifi.controller.แรงดันไฟฟ้า | แรงดันไฟฟ้าในการทำงานเฉลี่ย (mV) ของตัวควบคุม Wi-Fi | - | |
cpu.ความเร็ว | นี่คือรายการหลายค่าที่แสดงรายการความเร็ว CPU ที่เป็นไปได้แต่ละรายการในหน่วย KHz | 125000 กิโลเฮิร์ตซ์, 250000 กิโลเฮิร์ตซ์, 500000 กิโลเฮิร์ตซ์, 1000000 กิโลเฮิร์ตซ์, 1500000 กิโลเฮิร์ตซ์ | จำนวนและลำดับของรายการต้องสอดคล้องกับรายการ mA ใน cpu.active |
cpu.ไม่ได้ใช้งาน | กำลังทั้งหมดที่ระบบดึงมาใช้เมื่อ CPU (และ SoC) อยู่ในสถานะหยุดทำงานชั่วคราวของระบบ | 3 มิลลิแอมป์ | - |
cpu.ตื่น | พลังงานเพิ่มเติมที่ใช้เมื่อ CPU อยู่ในสถานะไม่ได้ใช้งานตามกำหนดเวลา (kernel idle loop) ระบบไม่อยู่ในสถานะระงับระบบ | 50 มิลลิแอมป์ | แพลตฟอร์มของคุณอาจมีสถานะไม่ได้ใช้งานมากกว่าหนึ่งสถานะโดยมีระดับการใช้พลังงานที่แตกต่างกัน เลือกสถานะการไม่ได้ใช้งานตัวแทนเป็นระยะเวลานานของการไม่ได้ใช้งานตัวกำหนดตารางเวลา (หลายมิลลิวินาที) ตรวจสอบกราฟกำลังบนอุปกรณ์วัดของคุณ และเลือกตัวอย่างที่ CPU ใช้พลังงานน้อยที่สุด โดยละทิ้งตัวอย่างที่สูงกว่าเมื่อ CPU ออกจากสถานะไม่ได้ใช้งาน |
cpu.ใช้งานอยู่ | พลังงานเพิ่มเติมที่ใช้โดย CPU เมื่อทำงานด้วยความเร็วที่ต่างกัน | 100 มิลลิแอมป์, 120 มิลลิแอมป์, 140 มิลลิแอมป์, 160 มิลลิแอมป์, 200 มิลลิแอมป์ | ค่าแสดงถึงพลังงานที่ใช้โดยราง CPU เมื่อทำงานด้วยความเร็วที่ต่างกัน ตั้งค่าความเร็วสูงสุดในเคอร์เนลเป็นแต่ละความเร็วที่อนุญาต และตรึง CPU ที่ความเร็วนั้น จำนวนและลำดับของรายการสอดคล้องกับจำนวนและลำดับของรายการใน cpu.speeds |
cpu.clusters.cores | จำนวนคอร์ที่แต่ละคลัสเตอร์ CPU มี | 4, 2 | จำเป็นสำหรับอุปกรณ์ที่มี สถาปัตยกรรม CPU ต่างกัน เท่านั้น จำนวนรายการและลำดับควรตรงกับจำนวนรายการคลัสเตอร์สำหรับ cpu.active และ cpu.speeds รายการแรกแสดงถึงจำนวนแกน CPU ในคลัสเตอร์ 0 รายการที่สองแสดงถึงจำนวนแกน CPU ในคลัสเตอร์ 1 และอื่นๆ |
แบตเตอรี่ความจุ | ความจุแบตเตอรี่ทั้งหมดเป็น mAh | 3000 มิลลิแอมป์ | - |
การสแกนพลังงานต่ำ (LE) และบลูทูธ
สำหรับอุปกรณ์ที่ใช้ Android 7.0 ระบบจะรวบรวมข้อมูลสำหรับการสแกนพลังงานต่ำ (LE) และการรับส่งข้อมูลเครือข่าย Bluetooth (เช่น RFCOMM และ L2CAP) และเชื่อมโยงกิจกรรมเหล่านี้กับแอปที่เริ่มต้น การสแกนบลูทูธจะเชื่อมโยงกับแอปที่เริ่มต้นการสแกน แต่การสแกนแบบกลุ่มไม่ได้เชื่อมโยงกับแอป (และจะเชื่อมโยงกับแอปบลูทูธแทน) สำหรับการสแกนแอปเป็นเวลา N มิลลิวินาที ค่าใช้จ่ายในการสแกนคือ N มิลลิวินาทีของเวลา rx และเวลา N มิลลิวินาทีของ tx เวลาที่เหลือของตัวควบคุมทั้งหมดถูกกำหนดให้กับการรับส่งข้อมูลเครือข่ายหรือแอป Bluetooth