android 7.0電力使用状況分析
2255 ワード
主に以下の4点に要約する単一消費電力率=(単一消費電力/合計消費電力)*合計消費電力率 0.5%未満の項目はリストに表示されず、四捨五入表示率 を用いる.充電状態で以下の4つの条件を満たす場合、使用電力記録をクリアする:(1)自動リセットされず、以前に過電力が充満していた(2)現在の電力量が90%を超えた(3)前回の停電時(充電前)の電力量が20%未満で、現在の電力量が80%を超えた(4)合計消費電力が200%を超え、バッテリ記録キャッシュが満タン(256*1024;//256 KB) .電池が満充電になって充電がなくなると、記録電力使用記録を停止する、次にUSB/電源を抜くときに記録 をクリアする.
コード解析
SettingsモジュールPowerUseageSummary.java
消費電力記録のクリア
frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
コード解析
SettingsモジュールPowerUseageSummary.java
refreshStats() :
// ( \WIFI\BT..) = ( (mah)/ (mah)) *
final double percentOfTotal = ((sipper.totalPowerMah / totalPower) * dischargeAmount);
...
if (((int) (percentOfTotal + .5)) < 1) { // 0.5%
continue;
}
//
pref.setPercent(percentOfMax, percentOfTotal);
// setPercent :
mProgress = Utils.formatPercentage((int) (percentOfTotal + 0.5));//
消費電力記録のクリア
frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
1. setOnBatteryLocked ( )
if (onBattery) { //
// We will reset our status if we are unplugging after the
// battery was last full, or the level is at 100, or
// we have gone through a significant charge (from a very low
// level to a now very high level).
boolean reset = false;
//
if (!mNoAutoReset && (oldStatus == BatteryManager.BATTERY_STATUS_FULL //
|| level >= 90 // 90%
|| (mDischargeCurrentLevel < 20 && level >= 80) // ( ) 20%, 80%
|| (getHighDischargeAmountSinceCharge() >= 200 && mHistoryBuffer.dataSize() >= MAX_HISTORY_BUFFER))) { // 200, ( 256*1024; // 256KB)
...
reset = true;
...
}
...
if (reset) {
mRecordingHistory = true;
startRecordingHistory(mSecRealtime, mSecUptime, reset);// ,
}
}
2. setBatteryStateLocked
...
// , , USB/
if (!onBattery && status == BatteryManager.BATTERY_STATUS_FULL) {
// We don't record history while we are plugged in and fully charged.
// The next time we are unplugged, history will be cleared.
mRecordingHistory = DEBUG;// DEBUG = false
}