原文:https://source.android.com/devices/tech/power/values
設(shè)備制造商必須提供組件功耗配置文件/frameworks/base/core/res/res/xml/power_profile.xml
。
要測(cè)定電源配置文件的值抵怎,請(qǐng)使用測(cè)量設(shè)備使用功耗的硬件,并執(zhí)行所需信息的各種操作挺庞。測(cè)量這些操作期間的所用功耗并計(jì)算值(根據(jù)需要從其他基線所用功耗中獲得差異)。
由于功耗曲線的目標(biāo)是適當(dāng)?shù)毓烙?jì)電池消耗越驻,因此功率曲線值以電流(安培)給出声离。Android Framework 將電流乘以子系統(tǒng)處于活動(dòng)狀態(tài)的時(shí)間并計(jì)算mAh值,然后用于估計(jì)應(yīng)用程序/子系統(tǒng)耗盡的電池量批狐。
具有運(yùn)行Android 7.0及更高版本的藍(lán)牙,modem和Wi-Fi控制器的設(shè)備可以提供從芯片組數(shù)據(jù)獲得的額外功耗值前塔。
具有異構(gòu)CPU的設(shè)備
具有異構(gòu)體系結(jié)構(gòu)CPU核心的設(shè)備的電源配置文件必須包含以下附加字段:
- 每個(gè)群集的CPU總數(shù)(以cpu.clusters.cores表示)嚣艇。
- 每個(gè)群集支持的CPU速度。
- 每個(gè)群集的活動(dòng)CPU功耗华弓。
要區(qū)分群集的活動(dòng)CPU功耗和支持的CPU速度食零,請(qǐng)將群集編號(hào)附加到陣列的名稱中。群集編號(hào)按內(nèi)核設(shè)備樹中CPU核的順序分配寂屏。例如贰谣,在具有兩(2)個(gè)具有四(4)個(gè)核的集群的異構(gòu)體系結(jié)構(gòu)中:
- cluster0由cpu0-3組成
- cluster1由cpu4-7組成
Android Framework從sysfs文件/sys/devices/system/cpu/cpu<number>/cpufreq/stats
中讀取統(tǒng)計(jì)信息時(shí)需要用到這些CPU核編號(hào)。
集群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>
功耗值
下表介紹了可用的功耗值設(shè)置迁霎。要查看AOSP中的示例文件吱抚,請(qǐng)參閱 power_profile.xml。
名稱 | 描述 | 示例值 | 備注 |
---|---|---|---|
none | 無 | 0 | - |
screen.on | 屏幕以最小亮度打開時(shí)使用的額外功率考廉。 | 200mA | 含觸控和顯示背光秘豹。在0亮度,而不是Android最小值(接近10或20%)昌粤。 |
screen.full | 與最小亮度的屏幕相比既绕,屏幕處于最大亮度時(shí)使用的額外功率。 | 100mA-300mA | 將該值的一小部分(基于屏幕亮度)被添加到screen.on值以計(jì)算屏幕的使用功耗涮坐。 |
wifi.on | 打開Wi-Fi但未接收凄贩、傳輸或掃描時(shí)使用的額外功耗。 | 2mA | - |
wifi.active | 使用Wi-Fi發(fā)送或接收時(shí)的額外功耗膊升。 | 31mA | - |
wifi.scan | 使用Wi-Fi掃描接入點(diǎn)時(shí)的額外功耗怎炊。 | 100mA | - |
dsp.audio | 使用DSP進(jìn)行音頻解碼/編碼時(shí)的額外功率。 | 14.1mA | 保留供將來使用廓译。 |
dsp.video | 使用DSP進(jìn)行視頻解碼時(shí)的額外功率。 | 54mA | 保留供將來使用债查。 |
camera.avg | 使用經(jīng)典相機(jī)應(yīng)用的相機(jī)子系統(tǒng)的平均功耗非区。 | 600mA | 運(yùn)行預(yù)覽的應(yīng)用程序的粗略估計(jì),每分鐘捕獲大約10個(gè)全分辨率圖片盹廷。 |
camera.flashlight | 打開相機(jī)閃光燈模塊時(shí)的平均功耗征绸。 | 200mA | - |
gps.on | 使用GPS獲取信號(hào)時(shí)的額外功耗。 | 50mA | - |
radio.active | 使用蜂窩無線電發(fā)送/接收時(shí)的額外功耗。 | 100mA-300mA | - |
radio.scanning | 使用蜂窩無線電尋呼塔時(shí)的額外功耗管怠。 | 1.2mA | - |
radio.on | 開啟蜂窩無線電時(shí)的額外功率淆衷。多值輸入,每個(gè)信號(hào)強(qiáng)度一個(gè)(無信號(hào)渤弛,弱祝拯,中等,強(qiáng))她肯。 | 1.2mA | 一些無線電設(shè)備在搜索蜂窩塔并且沒有檢測(cè)到信號(hào)時(shí)會(huì)增加功率佳头。值可以相同或隨著信號(hào)強(qiáng)度的增加而減小。如果只提供一個(gè)值晴氨,則所有強(qiáng)度都使用相同的值康嘉。如果提供兩個(gè)值,第一個(gè)用于無信號(hào)籽前,第二個(gè)值用于所有其他強(qiáng)度亭珍,依此類推。 |
bluetooth.controller.idle | 空閑時(shí)藍(lán)牙控制器的平均電流消耗(mA)枝哄。 | - | 這些值不是估算的块蚌,而是取自控制器的數(shù)據(jù)表。如果存在多個(gè)接收或發(fā)送狀態(tài)膘格,則采用這些狀態(tài)的平均值峭范。此外,系統(tǒng)現(xiàn)在為 低能耗(LE)和藍(lán)牙掃描收集數(shù)據(jù)瘪贱。Android N及更高版本不再為bluetooth.active(通過藍(lán)牙A2DP播放音頻時(shí)使用)和bluetooth.on(藍(lán)牙開啟但空閑時(shí)使用)使用藍(lán)牙功耗值纱控。 |
bluetooth.controller.rx | 接收時(shí)藍(lán)牙控制器的平均電流消耗(mA)。 | - | - |
bluetooth.controller.tx | 發(fā)送時(shí)藍(lán)牙控制器的平均電流消耗(mA)菜秦。 | - | - |
bluetooth.controller.voltage | 藍(lán)牙控制器的平均工作電壓(mV)甜害。 | - | - |
modem.controller.idle | 空閑時(shí)modem控制器的平均電流消耗(mA)。 | - | 這些值不是估算的球昨,而是取自控制器的數(shù)據(jù)表尔店。如果存在多個(gè)接收或發(fā)送狀態(tài),則采用這些狀態(tài)的平均值主慰。 |
modem.controller.rx | 接收時(shí)modem控制器的平均電流消耗(mA)嚣州。 | - | - |
modem.controller.tx | 發(fā)送時(shí)modem控制器的平均電流消耗(mA)。 | - | - |
modem.controller.voltage | modem控制器的平均工作電壓(mV)共螺。 | - | - |
wifi.controller.idle | 空閑時(shí)Wi-Fi控制器的平均電流消耗(mA)该肴。 | - | 這些值不是估算的,而是取自控制器的數(shù)據(jù)表藐不。如果存在多個(gè)接收或發(fā)送狀態(tài)匀哄,則采用這些狀態(tài)的平均值秦效。 |
wifi.controller.rx | 接收時(shí)Wi-Fi控制器的平均電流消耗(mA)。 | - | - |
wifi.controller.tx | 發(fā)送時(shí)Wi-Fi控制器的平均電流消耗(mA)涎嚼。 | - | - |
wifi.controller.voltage | Wi-Fi控制器的平均工作電壓(mV)阱州。 | - | - |
cpu.speeds | 多值輸入,以KHz列出每個(gè)可能的CPU速度法梯。 | 125000KHz苔货,250000KHz,500000KHz鹊汛,1000000KHz蒲赂,1500000KHz | 條目的數(shù)量和順序必須與cpu.active中的mA條目相對(duì)應(yīng)。 |
cpu.idle | 當(dāng)CPU(和SoC)處于系統(tǒng)休眠狀態(tài)時(shí)系統(tǒng)汲取的總功耗刁憋。 | 3mA | - |
cpu.awake | CPU處于調(diào)度空閑狀態(tài)時(shí)的額外功耗(內(nèi)核空閑循環(huán)); 系統(tǒng)未處于系統(tǒng)休眠狀態(tài)滥嘴。 | 50mA | 您的平臺(tái)可能有多個(gè)閑置狀態(tài),使用不同的功耗水平; 為較長(zhǎng)時(shí)間的調(diào)度程序空閑(幾毫秒)選擇代表性空閑狀態(tài)至耻。檢查測(cè)量設(shè)備上的功率圖并選擇CPU處于最低功耗的樣本若皱,丟棄CPU退出空閑時(shí)的較高樣本。 |
cpu.active | CPU以不同速度運(yùn)行時(shí)的額外功耗尘颓。 | 100mA走触,120mA,140mA疤苹,160mA互广,200mA | 值表示以不同速度運(yùn)行時(shí)CPU軌道使用的功耗。將內(nèi)核中的最大速度設(shè)置為允許的每個(gè)速度卧土,并以該速度將CPU固定惫皱。條目的數(shù)量和順序?qū)?yīng)于cpu.speeds中條目的數(shù)量和順序。 |
cpu.clusters.cores | 每個(gè)CPU群集包含的核數(shù)尤莺。 | 4,2 | 僅適用于具有異構(gòu)CPU架構(gòu)的設(shè)備旅敷。條目數(shù)和順序應(yīng)與cpu.active和cpu.speeds的集群條目數(shù)相匹配。第一個(gè)條目表示cluster0中的CPU核心數(shù)颤霎,第二個(gè)條目表示cluster1中的CPU核心數(shù)媳谁,依此類推。 |
電池容量 | 總電池容量友酱,單位為mAh晴音。 | 3000mAh的 | - |
低能耗(LE)和藍(lán)牙掃描
對(duì)于運(yùn)行Android 7.0的設(shè)備,系統(tǒng)會(huì)收集低能耗(LE)掃描和藍(lán)牙網(wǎng)絡(luò)流量(如RFCOMM和L2CAP)的數(shù)據(jù)粹污,并將這些活動(dòng)與啟動(dòng)應(yīng)用程序相關(guān)聯(lián)段多。藍(lán)牙掃描與啟動(dòng)掃描的應(yīng)用程序相關(guān)聯(lián),但批量掃描不是(與藍(lán)牙應(yīng)用程序相關(guān)聯(lián))壮吩。對(duì)于掃描N毫秒的應(yīng)用程序进苍,掃描的成本是n毫秒的rx時(shí)間和N毫秒的tx時(shí)間; 所有剩余控制器時(shí)間都分配給網(wǎng)絡(luò)流量或藍(lán)牙應(yīng)用程序。