電池使用資訊源自電池使用統計資料和電源設定檔值。
電池使用統計
該框架透過追蹤設備組件在不同狀態下花費的時間來自動確定電池使用統計資料。當組件(Wi-Fi 晶片組、蜂窩無線電、藍牙、GPS、顯示器、CPU)更改狀態(關閉/開啟、空閒/滿功率、低/高亮度等)時,控制服務會向框架 BatteryStats 服務報告。 BatteryStats 隨著時間的推移收集資訊並將其儲存以供重新啟動時使用。該服務不直接追蹤電池電流消耗,而是收集可用於估算不同組件的電池消耗的計時資訊。
該框架使用以下方法收集統計資料:
- 推。感知組件變更的服務將狀態變更推送到 BatteryStats 服務。
- 拉。對於應用程式使用的 CPU 等元件,框架會自動在轉換點(例如啟動或停止活動)提取資料以拍攝快照。
資源消耗與使用該資源的應用程式相關聯。當多個應用程式同時使用某個資源(例如防止系統掛起的喚醒鎖定)時,框架會將消耗分散到這些應用程式之間,儘管不一定相等。
為了避免丟失關閉事件的使用統計資料(這可能表示電池功耗問題(即由於電池剩餘容量為零而發生關閉)),框架大約每 30 分鐘閃爍一次統計資料。
電池使用統計資料完全由框架處理,不需要 OEM 修改。
功率曲線值
注意:設備製造商必須提供組件電源配置文件,該配置文件定義組件的電流消耗值以及組件隨時間推移造成的大致電池消耗。此設定檔在platform/frameworks/base/core/res/res/xml/power_profile.xml中定義。有關這些設定的指導,請參閱功率值。
在功率配置檔中,功耗以標稱電壓下的電流消耗的毫安培 (mA) 為單位,也可以是以微安培 (uA) 為單位的小數值。該值應該是電池消耗的毫安培電流,而不是適用於與電池消耗的電流不對應的電源軌的值。
例如,顯示器電源設定檔指定將顯示器保持在最小亮度和最大亮度所需的電流毫安培。為了確定保持顯示器開啟的電力成本(即顯示器組件消耗的電池),框架追蹤每個亮度等級所花費的時間,然後將這些時間間隔乘以內插的顯示器亮度成本。
該框架還將每個應用程式的 CPU 時間乘以以特定速度運行 CPU 所需的毫安培電流。此計算建立了應用程式透過執行 CPU 程式碼消耗的電池電量的比較排名(單獨報告前台應用程式的時間和包括背景活動的總時間)。