Hook up anomaly active hour to BatteryTipPolicy

So we can control it from server side.

Bug: 80192137
Test: RunSettingsRoboTests
Change-Id: Ic9a4db44029bdcd7e45f4f9fb6b7d71c8c07c429
This commit is contained in:
jackqdyulei
2018-07-17 15:05:26 -07:00
parent d3e18dcf0a
commit 35015741b2
3 changed files with 18 additions and 3 deletions

View File

@@ -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_PERIOD_MS = "high_usage_period_ms";
private static final String KEY_HIGH_USAGE_BATTERY_DRAINING = "high_usage_battery_draining"; 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_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_ENABLED = "reduced_battery_enabled";
private static final String KEY_REDUCED_BATTERY_PERCENT = "reduced_battery_percent"; private static final String KEY_REDUCED_BATTERY_PERCENT = "reduced_battery_percent";
private static final String KEY_LOW_BATTERY_ENABLED = "low_battery_enabled"; private static final String KEY_LOW_BATTERY_ENABLED = "low_battery_enabled";
@@ -118,6 +119,15 @@ public class BatteryTipPolicy {
*/ */
public final boolean appRestrictionEnabled; 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 * {@code true} if reduced battery tip is enabled
* *
@@ -228,6 +238,7 @@ public class BatteryTipPolicy {
Duration.ofHours(2).toMillis()); Duration.ofHours(2).toMillis());
highUsageBatteryDraining = mParser.getInt(KEY_HIGH_USAGE_BATTERY_DRAINING, 25); highUsageBatteryDraining = mParser.getInt(KEY_HIGH_USAGE_BATTERY_DRAINING, 25);
appRestrictionEnabled = mParser.getBoolean(KEY_APP_RESTRICTION_ENABLED, true); 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); reducedBatteryEnabled = mParser.getBoolean(KEY_REDUCED_BATTERY_ENABLED, false);
reducedBatteryPercent = mParser.getInt(KEY_REDUCED_BATTERY_PERCENT, 50); reducedBatteryPercent = mParser.getInt(KEY_REDUCED_BATTERY_PERCENT, 50);
lowBatteryEnabled = mParser.getBoolean(KEY_LOW_BATTERY_ENABLED, true); lowBatteryEnabled = mParser.getBoolean(KEY_LOW_BATTERY_ENABLED, true);

View File

@@ -31,6 +31,7 @@ import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -63,8 +64,8 @@ public class RestrictAppDetector implements BatteryTipDetector {
return getFakeData(); return getFakeData();
} }
if (mPolicy.appRestrictionEnabled) { if (mPolicy.appRestrictionEnabled) {
// TODO(b/80192137): hook up the query timestamp to server side final long oneDayBeforeMs = System.currentTimeMillis()
final long oneDayBeforeMs = System.currentTimeMillis() - DateUtils.DAY_IN_MILLIS; - TimeUnit.HOURS.toMillis(mPolicy.appRestrictionActiveHour);
final List<AppInfo> highUsageApps = BatteryTipUtils.detectAnomalies(mContext, final List<AppInfo> highUsageApps = BatteryTipUtils.detectAnomalies(mContext,
oneDayBeforeMs); oneDayBeforeMs);
if (!highUsageApps.isEmpty()) { if (!highUsageApps.isEmpty()) {

View File

@@ -49,7 +49,8 @@ public class BatteryTipPolicyTest {
+ ",test_battery_saver_tip=true" + ",test_battery_saver_tip=true"
+ ",test_high_usage_tip=false" + ",test_high_usage_tip=false"
+ ",test_smart_battery_tip=true" + ",test_smart_battery_tip=true"
+ ",test_low_battery_tip=true"; + ",test_low_battery_tip=true"
+ ",app_restriction_active_hour=6";
private Context mContext; private Context mContext;
@Before @Before
@@ -72,6 +73,7 @@ public class BatteryTipPolicyTest {
assertThat(batteryTipPolicy.highUsagePeriodMs).isEqualTo(2000); assertThat(batteryTipPolicy.highUsagePeriodMs).isEqualTo(2000);
assertThat(batteryTipPolicy.highUsageBatteryDraining).isEqualTo(30); assertThat(batteryTipPolicy.highUsageBatteryDraining).isEqualTo(30);
assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue(); assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue();
assertThat(batteryTipPolicy.appRestrictionActiveHour).isEqualTo(6);
assertThat(batteryTipPolicy.reducedBatteryEnabled).isTrue(); assertThat(batteryTipPolicy.reducedBatteryEnabled).isTrue();
assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(30); assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(30);
assertThat(batteryTipPolicy.lowBatteryEnabled).isFalse(); assertThat(batteryTipPolicy.lowBatteryEnabled).isFalse();
@@ -99,6 +101,7 @@ public class BatteryTipPolicyTest {
assertThat(batteryTipPolicy.highUsagePeriodMs).isEqualTo(2 * DateUtils.HOUR_IN_MILLIS); assertThat(batteryTipPolicy.highUsagePeriodMs).isEqualTo(2 * DateUtils.HOUR_IN_MILLIS);
assertThat(batteryTipPolicy.highUsageBatteryDraining).isEqualTo(25); assertThat(batteryTipPolicy.highUsageBatteryDraining).isEqualTo(25);
assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue(); assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue();
assertThat(batteryTipPolicy.appRestrictionActiveHour).isEqualTo(24);
assertThat(batteryTipPolicy.reducedBatteryEnabled).isFalse(); assertThat(batteryTipPolicy.reducedBatteryEnabled).isFalse();
assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(50); assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(50);
assertThat(batteryTipPolicy.lowBatteryEnabled).isTrue(); assertThat(batteryTipPolicy.lowBatteryEnabled).isTrue();