測量功率值

設備製造商必須在/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

姓名描述範例值筆記
環境.on當螢幕處於打瞌睡/環境/常亮模式而不是關閉模式時,會消耗額外的電力。約100毫安-
螢幕開啟當螢幕以最低亮度開啟時會消耗額外的電量。 200毫安包括觸控控制器和顯示器背光。亮度為 0 時,並非 Android 最低亮度(通常為 10 或 20%)。
全螢幕與螢幕處於最低亮度時相比,螢幕處於最大亮度時所使用的額外電量。 100毫安-300毫安該值的一小部分(基於螢幕亮度)將添加到 screen.on 值中以計算螢幕的電量使用情況。
無線網路開啟Wi-Fi 開啟但不接收、傳輸或掃描時會消耗額外電力。 2毫安-
wifi.活躍透過 Wi-Fi 傳輸或接收時所使用的額外電力。 31毫安-
wifi掃描Wi-Fi 掃描存取點時會消耗額外電力。 100毫安-
聲音的透過 DSP 進行音訊解碼/編碼時會消耗額外的電力。約10毫安用於 DSP 音訊。
影片透過 DSP 進行視訊解碼時會消耗額外的電力。約50毫安用於 DSP 視訊。
相機平均值典型相機應用的相機子系統的平均功耗。 600毫安旨在作為對運行預覽並每分鐘捕獲大約 10 張全分辨率圖片的應用程式的粗略估計。
相機.手電筒相機閃光燈模組開啟時所使用的平均功率。 200毫安-
基於 GPS 訊號質量GPS 根據訊號強度使用額外電量。這是一個多值條目,每個訊號強度一個,從最弱到最強。 30毫安、10毫安-
GPS開啟GPS 取得訊號時所使用的額外電力。 50毫安-
放射性蜂窩無線電發射/接收時所使用的額外電力。 100毫安-300毫安-
無線電掃描蜂窩無線電尋呼塔時使用額外的電力。 1.2毫安-
廣播電台蜂窩無線電開啟時使用額外電量。這是一個多值條目,每個訊號強度一個(無訊號、弱、中等、強)。 1.2毫安有些無線電在搜尋手機訊號塔但沒有偵測到訊號時會提高功率。隨著訊號強度的增加,值可以相同或減少。如果您僅提供一個值,則所有優勢都會使用相同的值。如果您提供兩個值,第一個值用於無訊號,第二個值用於所有其他強度,依此類推。
藍牙控制器空閒空閒時藍牙控制器的平均電流消耗 (mA)。 -這些值不是估計的,而是取自控制器的資料表。如果存在多個接收或傳送狀態,則取這些狀態的平均值。此外,該系統現在還收集低功耗 (LE) 和藍牙掃描的數據。

Android 7.0 及更高版本不再使用 bluetooth.active(透過藍牙 A2DP 播放音訊時使用)和 bluetooth.on(當藍牙開啟但空閒時使用)的藍牙功率值。
藍牙控制器.rx接收時藍牙控制器的平均電流消耗 (mA)。 -
藍牙控制器.tx傳輸時藍牙控制器的平均電流消耗 (mA)。 -
藍牙.控制器.電壓藍牙控制器的平均工作電壓(mV)。 -
調製解調器.控制器.睡眠休眠時調變解調器控制器的平均電流消耗 (mA)。 0毫安這些值不是估計的,而是取自控制器的資料表。如果存在多個接收狀態,則取這些狀態的平均值。如果有多個傳輸狀態,則從 Android 9 開始支援為每個傳輸狀態指定一個值。
數據機控制器空閒空閒時調變解調器控制器的平均電流消耗 (mA)。 -
數據機控制器.rx接收時調變解調器控制器的平均電流消耗 (mA)。 -
數據機控制器.tx以不同 RF 功率位準進行傳輸時調變解調器控制器的平均電流消耗 (mA)。這是一個多值條目,每個發射功率等級都有一個值。 100毫安、200毫安培、300毫安培、400毫安培、500毫安培
調製解調器.控制器.電壓數據機控制器的平均工作電壓 (mV)。 -
wifi.控制器.空閒空閒時 Wi-Fi 控制器的平均電流消耗 (mA)。 -這些值不是估計的,而是取自控制器的資料表。如果存在多個接收或傳送狀態,則取這些狀態的平均值。
wifi控制器.rx Wi-Fi 控制器接收時的平均電流消耗 (mA)。 -
wifi.controller.tx傳輸時 Wi-Fi 控制器的平均電流消耗 (mA)。 -
wifi.控制器.電壓Wi-Fi 控制器的平均工作電壓(mV)。 -
cpu速度這是一個多值條目,列出了每個可能的 CPU 速度(以 KHz 為單位)。 125000KHz、250000KHz、500000KHz、1000000KHz、1500000KHz條目的數量和順序必須與 cpu.active 中的 mA 條目相對應。
cpu空閒CPU(和 SoC)處於系統掛起狀態時系統消耗的總功耗。 3毫安-
cpu.喚醒CPU 處於調度空閒狀態(核心空閒循環)時所使用的額外電量;系統未處於系統掛起狀態。 50毫安您的平台可能有多個處於使用狀態的空閒狀態,並且具有不同的功耗等級;選擇具有代表性的空閒狀態以實現較長時間的調度程序空閒(幾毫秒)。檢查測量設備上的功率圖,選擇 CPU 消耗最低的樣本,丟棄 CPU 處於閒置狀態的較高樣本。
CPU 活動狀態CPU 以不同速度運轉時所使用的額外電量。 100毫安培、120毫安培、140毫安培、160毫安培、200毫安培值表示 CPU 導軌以不同速度運轉時所使用的功率。將核心中的最大速度設定為每個允許的速度,並將 CPU 固定在該速度。條目的數量和順序對應於 cpu.speeds 中條目的數量和順序。
cpu.集群.核心數每個CPU叢集包含的核心數量。 4, 2僅對於具有異質 CPU 架構的設備需要。條目數和順序應與 cpu.active 和 cpu.speeds 的群集條目數相符。第一個條目代表 cluster0 的 CPU 核心數,第二個條目代表 cluster1 中的 CPU 核心數,依此類推。
電池容量電池總容量(mAh)。 3000毫安培時-

低功耗 (LE) 和藍牙掃描

對於運行 Android 7.0 的設備,系統會收集低功耗 (LE) 掃描和藍牙網路流量(例如 RFCOMM 和 L2CAP)的數據,並將這些活動與啟動應用程式相關聯。藍牙掃描與啟動掃描的應用程式相關聯,但批量掃描則不然(而是與藍牙應用程式相關聯)。對於掃描 N 毫秒的應用程序,掃描的成本是 N 毫秒的 rx 時間和 N 毫秒的 tx 時間;所有剩餘的控制器時間都分配給網路流量或藍牙應用程式。