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