裝置製造商必須在 /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 核心順序指派。舉例來說,在異質架構中,有兩 (2) 個叢集,每個叢集有四 (4) 個核心:
- cluster0 包含 cpu0-3
- cluster1 包含 cpu4-7
Android 架構會在從 /sys/devices/system/cpu/cpu<number>/cpufreq/stats
中的 sysfs
檔案讀取統計資料時,使用這些 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>
功率值
下表說明可用的電源值設定。如要查看 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 | 用於數位廣告平台影片。 |
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)。 | - | |
Bluetoothtooth.controller.voltage | 藍牙控制器的平均運作電壓 (mV)。 | - | |
modem.controller.sleep | 處於休眠狀態時,數據機控制器的平均電流消耗量 (mA)。 | 0 mA | 這些值並非預估值,而是取自控制器的資料表。如果有多個接收狀態,系統會計算這些狀態的平均值。如果有多個傳輸狀態,則自 Android 9 起,系統就會支援為每個傳輸狀態指定值。 |
modem.controller.idle | 數據機控制器閒置時的平均電流消耗量 (mA)。 | - | |
modem.controller.rx | 接收時數據機控制器的平均電流消耗量 (mA)。 | - | |
modem.controller.tx | 在不同 RF 功率等級下傳輸時,數據機控制器的平均電流消耗量 (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.speed 的叢集項目數量相符。第一個項目代表叢集 0 中的 CPU 核心數量,第二個項目代表叢集 1 中的 CPU 核心數量,以此類推。 |
battery.capacity | 總電池容量 (以 mAh 為單位)。 | 3000 mAh | - |
低功耗 (LE) 和藍牙掃描
對於搭載 Android 7.0 的裝置,系統會收集低功耗 (LE) 掃描和藍牙網路流量 (例如 RFCOMM 和 L2CAP) 的資料,並將這些活動與啟動應用程式建立關聯。藍牙掃描會與啟動掃描的應用程式建立關聯,但批次掃描不會 (而是與藍牙應用程式建立關聯)。如果應用程式掃描時間是 N 毫秒,掃描費用為 N 毫秒和 N 毫秒的 N 毫秒時間;剩餘的控制器時間會指派給網路流量或藍牙應用程式。