測量功率值

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