電池用量資訊是根據電池用量統計資料和電源設定檔值得出。
電池用量統計資料
架構會追蹤裝置元件處於不同狀態的時間長度,自動判斷電池使用統計資料。當元件 (Wi-Fi 晶片組、行動電台、藍牙、GPS、螢幕、CPU) 狀態變更 (關閉/開啟、閒置/全電力、低亮度/高亮度等) 時,控制服務會向架構 BatteryStats 服務回報。BatteryStats 會隨時間收集資訊,並儲存這些資訊,以便在重新啟動時使用。這項服務不會直接追蹤電池電流消耗量,而是收集可用於估算不同元件電池消耗量的時間資訊。
架構會使用下列方法收集統計資料:
- 推送。瞭解元件變更的服務會將狀態變更推送至 BatteryStats 服務。
- 提取。對於應用程式 CPU 用量等元件,架構會在轉換點 (例如開始或停止活動) 自動擷取資料,以便取得快照。
資源用量與使用該資源的應用程式相關。當多個應用程式同時使用資源 (例如可防止系統暫停的喚醒鎖) 時,架構會將耗用量分散到這些應用程式,但不一定是平均分配。
為避免關機事件導致使用統計資料遺失,這可能表示電池耗電量問題 (也就是電池電量耗盡導致關機),因此架構會大約每 30 分鐘閃爍一次統計資料。
電池使用統計資料完全由架構處理,不需要原始設備製造商 (OEM) 修改。
電源設定檔值
注意:裝置製造商必須提供元件電源設定檔,定義元件的電流耗電量值,以及元件隨時間推移所造成的電池耗電量。這個設定檔是在 platform/frameworks/base/core/res/res/xml/power_profile.xml 中定義。如需這些設定的操作說明,請參閱「電源值」。
在電源設定檔中,耗電量會以毫安培 (mA) 指定在額定電壓下所消耗的電流,並可以微安培 (uA) 指定為小數值。這個值應為電池消耗的 mA,而非適用於電源軌的值,因為電源軌不一定與電池消耗的電流相符。
舉例來說,螢幕電源設定檔會指定在最小亮度和最大亮度下,維持螢幕開啟所需的電流 mA。為了判斷保持螢幕開啟的電力成本 (即螢幕元件耗盡的電池電量),架構會追蹤各亮度等級的耗電時間,然後將這些時間間隔乘以內插的螢幕亮度成本。
此架構也會將每個應用程式的 CPU 時間乘以以特定速度執行 CPU 所需的 mA。這項計算會根據應用程式執行 CPU 程式碼所耗用的電量,建立比較排名 (前景應用程式時間和總時間 (包括背景活動) 會分別回報)。