diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java index 22c90e38845..4bd8cd73c9f 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java @@ -40,6 +40,7 @@ public class BatteryTipPolicy { private static final String KEY_HIGH_USAGE_PERIOD_MS = "high_usage_period_ms"; private static final String KEY_HIGH_USAGE_BATTERY_DRAINING = "high_usage_battery_draining"; private static final String KEY_APP_RESTRICTION_ENABLED = "app_restriction_enabled"; + private static final String KEY_APP_RESTRICTION_ACTIVE_HOUR = "app_restriction_active_hour"; private static final String KEY_REDUCED_BATTERY_ENABLED = "reduced_battery_enabled"; private static final String KEY_REDUCED_BATTERY_PERCENT = "reduced_battery_percent"; private static final String KEY_LOW_BATTERY_ENABLED = "low_battery_enabled"; @@ -118,6 +119,15 @@ public class BatteryTipPolicy { */ public final boolean appRestrictionEnabled; + /** + * Period(hour) to show anomaly apps. If it is 24 hours, it means only show anomaly apps + * happened in last 24 hours. + * + * @see Settings.Global#BATTERY_TIP_CONSTANTS + * @see #KEY_APP_RESTRICTION_ACTIVE_HOUR + */ + public final int appRestrictionActiveHour; + /** * {@code true} if reduced battery tip is enabled * @@ -228,6 +238,7 @@ public class BatteryTipPolicy { Duration.ofHours(2).toMillis()); highUsageBatteryDraining = mParser.getInt(KEY_HIGH_USAGE_BATTERY_DRAINING, 25); appRestrictionEnabled = mParser.getBoolean(KEY_APP_RESTRICTION_ENABLED, true); + appRestrictionActiveHour = mParser.getInt(KEY_APP_RESTRICTION_ACTIVE_HOUR, 24); reducedBatteryEnabled = mParser.getBoolean(KEY_REDUCED_BATTERY_ENABLED, false); reducedBatteryPercent = mParser.getInt(KEY_REDUCED_BATTERY_PERCENT, 50); lowBatteryEnabled = mParser.getBoolean(KEY_LOW_BATTERY_ENABLED, true); diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/RestrictAppDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/RestrictAppDetector.java index bda0073ab85..7a0a2723bd4 100644 --- a/src/com/android/settings/fuelgauge/batterytip/detectors/RestrictAppDetector.java +++ b/src/com/android/settings/fuelgauge/batterytip/detectors/RestrictAppDetector.java @@ -31,6 +31,7 @@ import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import androidx.annotation.VisibleForTesting; @@ -63,8 +64,8 @@ public class RestrictAppDetector implements BatteryTipDetector { return getFakeData(); } if (mPolicy.appRestrictionEnabled) { - // TODO(b/80192137): hook up the query timestamp to server side - final long oneDayBeforeMs = System.currentTimeMillis() - DateUtils.DAY_IN_MILLIS; + final long oneDayBeforeMs = System.currentTimeMillis() + - TimeUnit.HOURS.toMillis(mPolicy.appRestrictionActiveHour); final List highUsageApps = BatteryTipUtils.detectAnomalies(mContext, oneDayBeforeMs); if (!highUsageApps.isEmpty()) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java index 547e0eb455f..053a7164345 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java @@ -49,7 +49,8 @@ public class BatteryTipPolicyTest { + ",test_battery_saver_tip=true" + ",test_high_usage_tip=false" + ",test_smart_battery_tip=true" - + ",test_low_battery_tip=true"; + + ",test_low_battery_tip=true" + + ",app_restriction_active_hour=6"; private Context mContext; @Before @@ -72,6 +73,7 @@ public class BatteryTipPolicyTest { assertThat(batteryTipPolicy.highUsagePeriodMs).isEqualTo(2000); assertThat(batteryTipPolicy.highUsageBatteryDraining).isEqualTo(30); assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue(); + assertThat(batteryTipPolicy.appRestrictionActiveHour).isEqualTo(6); assertThat(batteryTipPolicy.reducedBatteryEnabled).isTrue(); assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(30); assertThat(batteryTipPolicy.lowBatteryEnabled).isFalse(); @@ -99,6 +101,7 @@ public class BatteryTipPolicyTest { assertThat(batteryTipPolicy.highUsagePeriodMs).isEqualTo(2 * DateUtils.HOUR_IN_MILLIS); assertThat(batteryTipPolicy.highUsageBatteryDraining).isEqualTo(25); assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue(); + assertThat(batteryTipPolicy.appRestrictionActiveHour).isEqualTo(24); assertThat(batteryTipPolicy.reducedBatteryEnabled).isFalse(); assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(50); assertThat(batteryTipPolicy.lowBatteryEnabled).isTrue();