diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/os/BluetoothPowerCalculator.java | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/core/java/com/android/internal/os/BluetoothPowerCalculator.java b/core/java/com/android/internal/os/BluetoothPowerCalculator.java index 6e99bbbf2331..c322258eda85 100644 --- a/core/java/com/android/internal/os/BluetoothPowerCalculator.java +++ b/core/java/com/android/internal/os/BluetoothPowerCalculator.java @@ -51,7 +51,7 @@ public class BluetoothPowerCalculator extends PowerCalculator { @Override public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats, long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) { - if (!mHasBluetoothPowerController || !batteryStats.hasBluetoothActivityReporting()) { + if (!batteryStats.hasBluetoothActivityReporting()) { return; } @@ -69,8 +69,8 @@ public class BluetoothPowerCalculator extends PowerCalculator { final ControllerActivityCounter activityCounter = batteryStats.getBluetoothControllerActivity(); final long systemDurationMs = calculateDuration(activityCounter); - final double systemPowerMah = - calculatePowerMah(powerModel, measuredChargeUC, activityCounter); + final double systemPowerMah = calculatePowerMah(powerModel, measuredChargeUC, + activityCounter, query.shouldForceUsePowerProfileModel()); // Subtract what the apps used, but clamp to 0. final long systemComponentDurationMs = Math.max(0, systemDurationMs - total.durationMs); @@ -100,7 +100,8 @@ public class BluetoothPowerCalculator extends PowerCalculator { final ControllerActivityCounter activityCounter = app.getBatteryStatsUid().getBluetoothControllerActivity(); final long durationMs = calculateDuration(activityCounter); - final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter); + final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter, + query.shouldForceUsePowerProfileModel()); app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_BLUETOOTH, durationMs) .setConsumedPower(BatteryConsumer.POWER_COMPONENT_BLUETOOTH, powerMah, powerModel); @@ -132,7 +133,7 @@ public class BluetoothPowerCalculator extends PowerCalculator { batteryStats.getBluetoothControllerActivity(); final long systemDurationMs = calculateDuration(activityCounter); final double systemPowerMah = - calculatePowerMah(powerModel, measuredChargeUC, activityCounter); + calculatePowerMah(powerModel, measuredChargeUC, activityCounter, false); // Subtract what the apps used, but clamp to 0. final double powerMah = Math.max(0, systemPowerMah - total.powerMah); @@ -165,7 +166,8 @@ public class BluetoothPowerCalculator extends PowerCalculator { final int powerModel = getPowerModel(measuredChargeUC); final ControllerActivityCounter activityCounter = u.getBluetoothControllerActivity(); final long durationMs = calculateDuration(activityCounter); - final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter); + final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter, + false); app.bluetoothRunningTimeMs = durationMs; app.bluetoothPowerMah = powerMah; @@ -188,7 +190,7 @@ public class BluetoothPowerCalculator extends PowerCalculator { /** Returns bluetooth power usage based on the best data available. */ private double calculatePowerMah(@BatteryConsumer.PowerModel int powerModel, - long measuredChargeUC, ControllerActivityCounter counter) { + long measuredChargeUC, ControllerActivityCounter counter, boolean ignoreReportedPower) { if (powerModel == BatteryConsumer.POWER_MODEL_MEASURED_ENERGY) { return uCtoMah(measuredChargeUC); } @@ -197,12 +199,17 @@ public class BluetoothPowerCalculator extends PowerCalculator { return 0; } - final double powerMah = - counter.getPowerCounter().getCountLocked(BatteryStats.STATS_SINCE_CHARGED) - / (double) (1000 * 60 * 60); + if (!ignoreReportedPower) { + final double powerMah = + counter.getPowerCounter().getCountLocked(BatteryStats.STATS_SINCE_CHARGED) + / (double) (1000 * 60 * 60); + if (powerMah != 0) { + return powerMah; + } + } - if (powerMah != 0) { - return powerMah; + if (!mHasBluetoothPowerController) { + return 0; } final long idleTimeMs = |
