測量功率值

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