diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java index ed8cc62de59..9e970d29aed 100644 --- a/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java +++ b/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetector.java @@ -23,8 +23,6 @@ import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip; -import java.util.concurrent.TimeUnit; - /** * Detect whether the battery is too low */ @@ -46,9 +44,7 @@ public class LowBatteryDetector implements BatteryTipDetector { @Override public BatteryTip detect() { - final boolean lowBattery = mBatteryInfo.batteryLevel <= mWarningLevel - || (mBatteryInfo.discharging && mBatteryInfo.remainingTimeUs != 0 - && mBatteryInfo.remainingTimeUs < TimeUnit.HOURS.toMicros(mPolicy.lowBatteryHour)); + final boolean lowBattery = mBatteryInfo.batteryLevel <= mWarningLevel; final boolean lowBatteryEnabled = mPolicy.lowBatteryEnabled && !mIsPowerSaveMode; final boolean dischargingLowBatteryState = mPolicy.testLowBatteryTip || (mBatteryInfo.discharging && lowBattery); diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java index 1cbf2a3c5dd..fd0f866a6ec 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java @@ -116,8 +116,16 @@ public final class BatteryUsageDataLoader { final Handler handler = new Handler(Looper.getMainLooper()); final BatteryLevelData batteryLevelData = DataProcessManager.getBatteryLevelData( context, handler, /*isFromPeriodJob=*/ true, - batteryDiffDataMap -> DatabaseUtils.sendBatteryUsageSlotData(context, - ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap))); + batteryDiffDataMap -> { + DatabaseUtils.sendBatteryUsageSlotData(context, + ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap)); + if (batteryDiffDataMap.values().stream().anyMatch(data -> + (!data.getAppDiffEntryList().isEmpty() + || !data.getSystemDiffEntryList().isEmpty()))) { + FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider() + .detectSettingsAnomaly(context, /* displayDrain= */ 0); + } + }); if (batteryLevelData == null) { Log.d(TAG, "preprocessBatteryUsageSlots() no new battery usage data."); return; @@ -139,8 +147,6 @@ public final class BatteryUsageDataLoader { // No app usage data or battery diff data at this time. loadAppUsageData(context); preprocessBatteryUsageSlots(context); - FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider() - .detectSettingsAnomaly(context, /* displayDrain= */ 0); } Log.d(TAG, String.format( "loadUsageDataSafely() in %d/ms", System.currentTimeMillis() - start)); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java index 71042068913..c9e201b5131 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/LowBatteryDetectorTest.java @@ -53,7 +53,6 @@ public class LowBatteryDetectorTest { mPolicy = spy(new BatteryTipPolicy(RuntimeEnvironment.application)); mContext = RuntimeEnvironment.application; ReflectionHelpers.setField(mPolicy, "lowBatteryEnabled", true); - ReflectionHelpers.setField(mPolicy, "lowBatteryHour", 3); mBatteryInfo.discharging = true; mLowBatteryDetector = new LowBatteryDetector(mContext, mPolicy, mBatteryInfo, @@ -78,13 +77,9 @@ public class LowBatteryDetectorTest { @Test public void testDetect_lowBattery_tipNew() { - mBatteryInfo.batteryLevel = 3; + mBatteryInfo.batteryLevel = 20; mBatteryInfo.remainingTimeUs = TimeUnit.DAYS.toMillis(1); assertThat(mLowBatteryDetector.detect().getState()).isEqualTo(BatteryTip.StateType.NEW); - - mBatteryInfo.batteryLevel = 50; - mBatteryInfo.remainingTimeUs = TimeUnit.MINUTES.toMillis(1); - assertThat(mLowBatteryDetector.detect().getState()).isEqualTo(BatteryTip.StateType.NEW); } @Test @@ -104,9 +99,9 @@ public class LowBatteryDetectorTest { } @Test - public void testDetect_timeEstimationZero_tipInvisible() { + public void testDetect_lowTimeEstimation_tipInvisible() { mBatteryInfo.batteryLevel = 50; - mBatteryInfo.remainingTimeUs = 0; + mBatteryInfo.remainingTimeUs = TimeUnit.MINUTES.toMillis(1); assertThat(mLowBatteryDetector.detect().isVisible()).isFalse(); }