diff options
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsHelper.java | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsHelper.java b/core/java/com/android/internal/os/BatteryStatsHelper.java index 9caf78a6b3a3..f178c8cf7ece 100644 --- a/core/java/com/android/internal/os/BatteryStatsHelper.java +++ b/core/java/com/android/internal/os/BatteryStatsHelper.java @@ -126,6 +126,9 @@ public final class BatteryStatsHelper { PowerCalculator mCameraPowerCalculator; PowerCalculator mFlashlightPowerCalculator; + boolean mHasWifiPowerReporting = false; + boolean mHasBluetoothPowerReporting = false; + public static boolean checkWifiOnly(Context context) { ConnectivityManager cm = (ConnectivityManager)context.getSystemService( Context.CONNECTIVITY_SERVICE); @@ -349,21 +352,23 @@ public final class BatteryStatsHelper { } mMobileRadioPowerCalculator.reset(mStats); - if (mWifiPowerCalculator == null) { - if (checkHasWifiPowerReporting(mStats, mPowerProfile)) { - mWifiPowerCalculator = new WifiPowerCalculator(mPowerProfile); - } else { - mWifiPowerCalculator = new WifiPowerEstimator(mPowerProfile); - } + // checkHasWifiPowerReporting can change if we get energy data at a later point, so + // always check this field. + final boolean hasWifiPowerReporting = checkHasWifiPowerReporting(mStats, mPowerProfile); + if (mWifiPowerCalculator == null || hasWifiPowerReporting != mHasWifiPowerReporting) { + mWifiPowerCalculator = hasWifiPowerReporting ? + new WifiPowerCalculator(mPowerProfile) : + new WifiPowerEstimator(mPowerProfile); + mHasWifiPowerReporting = hasWifiPowerReporting; } mWifiPowerCalculator.reset(); - if (mBluetoothPowerCalculator == null) { - if (checkHasBluetoothPowerReporting(mStats, mPowerProfile)) { - mBluetoothPowerCalculator = new BluetoothPowerCalculator(mPowerProfile); - } else { - mBluetoothPowerCalculator = new BluetoothPowerCalculator(mPowerProfile); - } + final boolean hasBluetoothPowerReporting = checkHasBluetoothPowerReporting(mStats, + mPowerProfile); + if (mBluetoothPowerCalculator == null || + hasBluetoothPowerReporting != mHasBluetoothPowerReporting) { + mBluetoothPowerCalculator = new BluetoothPowerCalculator(mPowerProfile); + mHasBluetoothPowerReporting = hasBluetoothPowerReporting; } mBluetoothPowerCalculator.reset(); |