裝置製造商必須在 /frameworks/base/core/res/res/xml/power_profile.xml
中提供元件電源設定檔。
如要判斷電源設定檔的值,請使用可測量裝置耗電量的硬體,並執行需要資訊的各種作業。測量這些作業期間的耗電量,並計算值 (視情況從其他基準耗電量中得出差異)。
電力設定檔的目標是適當估算電池耗電量,因此電力設定檔值以電流 (安培) 表示。Android 架構會將電流乘以子系統的活動時間,然後計算 mAh 值,接著使用該值估算應用程式或子系統耗用的電量。
搭載 Android 7.0 以上版本的裝置,如果藍牙、數據機和 Wi-Fi 控制器正常運作,就能提供從晶片組資料取得的額外電量值。
搭載異質 CPU 的裝置
如果裝置的 CPU 核心採用異質架構,電源設定檔必須包含下列額外欄位:
- 每個叢集的 CPU 總數 (以 cpu.clusters.cores 表示)。
- 每個叢集支援的 CPU 速度。
- 每個叢集的 CPU 耗電量。
如要區分叢集的 CPU 實際耗電量和支援的 CPU 速度,請在陣列名稱後方附加叢集編號。叢集編號會按照核心裝置樹狀結構中的 CPU 核心順序指派。舉例來說,在具有兩個叢集和四個核心的異質架構中:
- cluster0 包含 cpu0-3
- cluster1 包含 cpu4-7
Android 架構會從下列位置的 sysfs
檔案讀取統計資料時,使用這些 CPU 核心數:
/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 | 螢幕處於微光/微光/一律開啟模式時,會比關閉螢幕時更耗電。 | 約 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 張全解析度圖片的速度擷取圖片的應用程式。 |
camera.flashlight | 相機閃光燈模組開啟時的平均耗電量。 | 200 mA | - |
gps.signalqualitybased | GPS 耗電量會因信號強度而異。這是多值項目,每個訊號強度各有一個值,從最弱到最強。 | 30 mA、10 mA | - |
gps.on | GPS 取得信號時的額外耗電量。 | 50 mA | - |
radio.active | 行動無線電傳輸/接收資料時的額外耗電量。 | 100 mA 至 300 mA | - |
radio.scanning | 手機無線電呼叫基地台時的額外耗電量。 | 1.2 mA | - |
radio.on | 開啟行動無線電時會比較耗電,這是多值項目,每個信號強度 (無信號、弱、中等、強) 各有一個值。 | 1.2 mA | 部分無線電在搜尋基地台時會提高功率,但不會偵測訊號。值可以相同,也可以隨著訊號強度增加而減少。如果只提供一個值,所有強度都會使用相同的值。如果您提供兩個值,第一個值會用於無信號,第二個值會用於所有其他強度,依此類推。 |
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)。這是多值項目,每個傳輸功率等級各有一個值。 | 100 mA、200 mA、300 mA、400 mA、500 mA | |
modem.controller.voltage | 數據機控制器的平均工作電壓 (mV)。 | - | |
wifi.controller.idle | Wi-Fi 控制器閒置時的平均電流消耗 (mA)。 | - | 這些值並非預估值,而是取自控制器的資料表。如果有多個接收或傳輸狀態,系統會取這些狀態的平均值。 |
wifi.controller.rx | Wi-Fi 控制器接收資料時的平均電流消耗 (mA)。 | - | |
wifi.controller.tx | Wi-Fi 控制器傳輸時的平均電流消耗 (mA)。 | - | |
wifi.controller.voltage | Wi-Fi 控制器的平均工作電壓 (mV)。 | - | |
cpu.speeds | 這是多值項目,列出每種可能的 CPU 速度 (以 KHz 為單位)。 | 125000 KHz、250000 KHz、500000 KHz、1000000 KHz、1500000 KHz | 項目的數量和順序必須與 cpu.active 中的 mA 項目相符。 |
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 的叢集項目數量相符。第一個項目代表 cluster0 中的 CPU 核心數量,第二個項目代表 cluster1 中的 CPU 核心數量,依此類推。 |
battery.capacity | 以 mAh 為單位的總電池容量。 | 3000 mAh | - |
低功耗 (LE) 和藍牙掃描
如果是搭載 Android 7.0 的裝置,系統會收集低功耗 (LE) 掃描和藍牙網路流量 (例如 RFCOMM 和 L2CAP) 的資料,並將這些活動與啟動的應用程式建立關聯。藍牙掃描會與啟動掃描的應用程式建立關聯,但批次掃描不會 (而是與藍牙應用程式建立關聯)。如果應用程式掃描 N 毫秒,掃描費用為 N 毫秒的 rx 時間和 N 毫秒的 tx 時間;所有剩餘的控制器時間都會分配給網路流量或藍牙應用程式。