測量功率值

裝置製造商必須在 /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 毫秒時間;剩餘的控制器時間會指派給網路流量或藍牙應用程式。