ผู้ผลิตอุปกรณ์ต้องระบุโปรไฟล์พลังงานของคอมโพเนนต์ใน
/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 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 |
camera.avg | การใช้พลังงานโดยเฉลี่ยของระบบย่อยของกล้องสำหรับแอปกล้องทั่วไป | 600 mA | ข้อมูลนี้เป็นค่าประมาณคร่าวๆ สําหรับแอปที่แสดงตัวอย่างและถ่ายภาพความละเอียดเต็มประมาณ 10 ภาพต่อนาที |
กล้องและไฟฉาย | พลังงานโดยเฉลี่ยที่โมดูลแฟลชของกล้องใช้เมื่อเปิดอยู่ | 200 mA | - |
gps.signalqualitybased | พลังงานเพิ่มเติมที่ GPS ใช้ตามระดับสัญญาณ รายการนี้เป็นรายการแบบหลายค่า โดยจะมี 1 รายการต่อความแรงสัญญาณ 1 ระดับ ตั้งแต่อ่อนที่สุดไปจนถึงแรงที่สุด | 30 mA, 10 mA | - |
gps.on | พลังงานเพิ่มเติมที่ใช้เมื่อ GPS กำลังรับสัญญาณ | 50 mA | - |
radio.active | พลังงานเพิ่มเติมที่ใช้เมื่อสัญญาณโทรศัพท์มือถือส่ง/รับ | 100 mA-300 mA | - |
radio.scanning | พลังงานเพิ่มเติมที่ใช้เมื่อสัญญาณโทรศัพท์มือถือส่งข้อความแจ้งไปยังหอคอย | 1.2 mA | - |
radio.on | พลังงานเพิ่มเติมที่ใช้เมื่อสัญญาณโทรศัพท์มือถือเปิดอยู่ รายการนี้เป็นรายการแบบหลายค่า โดยจะมี 1 รายการต่อความแรงสัญญาณ (ไม่มีสัญญาณ สัญญาณอ่อน ปานกลาง แรง) | 1.2 mA | วิทยุบางรุ่นจะเพิ่มพลังงานเมื่อค้นหาเสาสัญญาณมือถือแต่ไม่ตรวจพบสัญญาณ ค่าอาจเท่าเดิมหรือลดลงตามความแรงของสัญญาณที่เพิ่มขึ้น หากคุณระบุเพียงค่าเดียว ระบบจะใช้ค่าเดียวกันกับจุดแข็งทั้งหมด หากคุณระบุ 2 ค่า ระบบจะใช้ค่าแรกสำหรับสัญญาณที่ขาดหายไป ค่าที่ 2 สำหรับสัญญาณความแรงอื่นๆ ทั้งหมด และอื่นๆ |
bluetooth.controller.idle | ปริมาณกระแสไฟฟ้าที่ใช้โดยเฉลี่ย (mA) ของตัวควบคุมบลูทูธเมื่อไม่มีการใช้งาน | - | ค่าเหล่านี้ไม่ใช่ค่าประมาณ แต่นำมาจากชีตข้อมูลของตัวควบคุม หากมีสถานะการรับหรือการส่งหลายรายการ ระบบจะใช้ค่าเฉลี่ยของสถานะเหล่านั้น นอกจากนี้ ตอนนี้ระบบยังรวบรวมข้อมูลสำหรับการสแกนบลูทูธและบลูทูธพลังงานต่ำ (LE) ด้วย Android 7.0 ขึ้นไปจะไม่ใช้ค่าพลังงานบลูทูธสำหรับ bluetooth.active (ใช้เมื่อเล่นเสียงผ่านบลูทูธ A2DP) และ bluetooth.on (ใช้เมื่อบลูทูธเปิดอยู่แต่ไม่มีการใช้งาน) อีกต่อไป |
bluetooth.controller.rx | ปริมาณกระแสไฟฟ้าเฉลี่ย (mA) ของตัวควบคุมบลูทูธเมื่อรับข้อมูล | - | |
bluetooth.controller.tx | ปริมาณกระแสไฟฟ้าที่ใช้โดยเฉลี่ย (mA) ของตัวควบคุมบลูทูธเมื่อส่งข้อมูล | - | |
bluetooth.controller.voltage | แรงดันไฟฟ้าเฉลี่ยขณะใช้งาน (mV) ของตัวควบคุมบลูทูธ | - | |
modem.controller.sleep | ปริมาณกระแสไฟฟ้าที่ใช้โดยเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่ออยู่ในโหมดสลีป | 0 mA | ค่าเหล่านี้ไม่ใช่ค่าประมาณ แต่นำมาจากชีตข้อมูลของตัวควบคุม หากมีสถานะการรับหลายรายการ ระบบจะนําค่าเฉลี่ยของสถานะเหล่านั้น หากมีสถานะการส่งหลายรายการ ระบบจะรองรับการระบุค่าสำหรับสถานะการส่งแต่ละรายการโดยเริ่มตั้งแต่ Android 9 |
modem.controller.idle | การวาดปัจจุบันโดยเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อไม่มีการใช้งาน | - | |
modem.controller.rx | ปริมาณกระแสไฟฟ้าเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อรับ | - | |
Modem.controller.tx | ปริมาณกระแสไฟฟ้าที่ใช้โดยเฉลี่ย (mA) ของตัวควบคุมโมเด็มเมื่อส่งสัญญาณด้วยกำลัง RF ระดับต่างๆ รายการนี้เป็นรายการแบบหลายค่าที่มี 1 ค่าต่อระดับกำลังส่ง | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | แรงดันไฟฟ้าที่ทำงานโดยเฉลี่ย (mV) ของตัวควบคุมโมเด็ม | - | |
wifi.controller.idle | ปริมาณกระแสไฟฟ้าที่ใช้โดยเฉลี่ย (mA) ของตัวควบคุม Wi-Fi เมื่อไม่มีการใช้งาน | - | ค่าเหล่านี้ไม่ใช่ค่าประมาณ แต่นำมาจากชีตข้อมูลของตัวควบคุม หากมีสถานะการรับหรือการส่งหลายรายการ ระบบจะใช้ค่าเฉลี่ยของสถานะเหล่านั้น |
Wi-Fi.controller.rx | ปริมาณกระแสไฟฟ้าเฉลี่ย (mA) ของตัวควบคุม Wi-Fi เมื่อรับสัญญาณ | - | |
wifi.controller.tx | ปริมาณกระแสไฟฟ้าที่ใช้โดยเฉลี่ย (mA) ของตัวควบคุม Wi-Fi เมื่อส่งข้อมูล | - | |
wifi.controller.voltage | แรงดันไฟฟ้าที่ทำงานโดยเฉลี่ย (mV) ของตัวควบคุม Wi-Fi | - | |
ความเร็ว CPU | นี่คือรายการแบบหลายค่าที่แสดงความเร็ว CPU ที่เป็นไปได้แต่ละรายการเป็น KHz | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz | จํานวนและความเรียงของรายการต้องตรงกับรายการ mA ใน cpu.active |
cpu.idle | กำลังไฟฟ้าทั้งหมดที่ระบบใช้เมื่อ CPU (และ SoC) อยู่ในสถานะ "ระบบหยุดทำงานชั่วคราว" | 3 mA | - |
cpu.awake | พลังงานเพิ่มเติมที่ใช้เมื่อ CPU อยู่ในสถานะไม่ได้ทำงานตามกำหนดเวลา (เคอร์เนลไม่ได้ทำงานอยู่) ระบบไม่ได้อยู่ในสถานะระงับระบบ | 50 mA | แพลตฟอร์มของคุณอาจมีสถานะ "ไม่มีการใช้งาน" มากกว่า 1 สถานะที่ระดับการสิ้นเปลืองพลังงานแตกต่างกัน ให้เลือกสถานะ "ไม่มีการใช้งาน" ที่แสดงถึงสถานะ "ไม่มีการใช้งาน" ของเครื่องมือจัดตารางเวลาในระยะเวลาที่นานขึ้น (หลายมิลลิวินาที) ตรวจสอบกราฟพลังงานในอุปกรณ์วัดและเลือกตัวอย่างที่ CPU ใช้พลังงานต่ำที่สุด โดยทิ้งตัวอย่างที่สูงกว่าซึ่ง CPU ไม่ได้อยู่ในสถานะ "ไม่มีการใช้งาน" |
cpu.active | พลังงานเพิ่มเติมที่ซีพียูใช้เมื่อทำงานด้วยความเร็วที่ต่างกัน | 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, รายการที่ 2 แสดงจํานวนแกน CPU ในคลัสเตอร์ 1 และต่อๆ ไป |
battery.capacity | ความจุแบตเตอรี่ทั้งหมดในหน่วย mAh | 3,000 mAh | - |
การสแกนพลังงานต่ำ (LE) และบลูทูธ
สำหรับอุปกรณ์ที่ใช้ Android 7.0 ระบบจะเก็บรวบรวมข้อมูลการสแกนพลังงานต่ำ (LE) และการจราจรของข้อมูลในเครือข่ายบลูทูธ (เช่น RFCOMM และ L2CAP) และเชื่อมโยงกิจกรรมเหล่านี้กับแอปเริ่มต้น การสแกนหาบลูทูธจะเชื่อมโยงกับแอปที่เริ่มต้นการสแกน แต่การสแกนเป็นกลุ่มจะไม่เกิดขึ้น (และเชื่อมโยงกับแอปบลูทูธแทน) สําหรับแอปที่สแกนเป็นเวลา N มิลลิวินาที ต้นทุนของการสแกนคือเวลารับ N มิลลิวินาทีและเวลาส่ง N มิลลิวินาที ระบบจะกําหนดเวลาที่เหลือทั้งหมดของตัวควบคุมให้กับการรับส่งข้อมูลในเครือข่ายหรือแอปบลูทูธ