原文:https://source.android.com/devices/tech/power/values
設(shè)備制造商必須提供組件功耗配置文件/frameworks/base/core/res/res/xml/power_profile.xml。
要測定電源配置文件的值,請使用測量設(shè)備使用功耗的硬件,并執(zhí)行所需信息的各種操作。測量這些操作期間的所用功耗并計(jì)算值(根據(jù)需要從其他基線所用功耗中獲得差異)。
由于功耗曲線的目標(biāo)是適當(dāng)?shù)毓烙?jì)電池消耗,因此功率曲線值以電流(安培)給出。Android Framework 將電流乘以子系統(tǒ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è)群集的活動CPU功耗。
要區(qū)分群集的活動CPU功耗和支持的CPU速度,請將群集編號附加到陣列的名稱中。群集編號按內(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核編號。
集群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中的示例文件,請參閱 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獲取信號時(shí)的額外功耗。 | 50mA | - |
| radio.active | 使用蜂窩無線電發(fā)送/接收時(shí)的額外功耗。 | 100mA-300mA | - |
| radio.scanning | 使用蜂窩無線電尋呼塔時(shí)的額外功耗。 | 1.2mA | - |
| radio.on | 開啟蜂窩無線電時(shí)的額外功率。多值輸入,每個(gè)信號強(qiáng)度一個(gè)(無信號,弱,中等,強(qiáng))。 | 1.2mA | 一些無線電設(shè)備在搜索蜂窩塔并且沒有檢測到信號時(shí)會增加功率。值可以相同或隨著信號強(qiáng)度的增加而減小。如果只提供一個(gè)值,則所有強(qiáng)度都使用相同的值。如果提供兩個(gè)值,第一個(gè)用于無信號,第二個(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條目相對應(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 | 您的平臺可能有多個(gè)閑置狀態(tài),使用不同的功耗水平; 為較長時(shí)間的調(diào)度程序空閑(幾毫秒)選擇代表性空閑狀態(tài)。檢查測量設(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)牙掃描
對于運(yùn)行Android 7.0的設(shè)備,系統(tǒng)會收集低能耗(LE)掃描和藍(lán)牙網(wǎng)絡(luò)流量(如RFCOMM和L2CAP)的數(shù)據(jù),并將這些活動與啟動應(yīng)用程序相關(guān)聯(lián)。藍(lán)牙掃描與啟動掃描的應(yīng)用程序相關(guān)聯(lián),但批量掃描不是(與藍(lán)牙應(yīng)用程序相關(guān)聯(lián))。對于掃描N毫秒的應(yīng)用程序,掃描的成本是n毫秒的rx時(shí)間和N毫秒的tx時(shí)間; 所有剩余控制器時(shí)間都分配給網(wǎng)絡(luò)流量或藍(lán)牙應(yīng)用程序。