測量功率值

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

,

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