summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhen Sun <zhensun@google.com>2020-06-11 15:59:24 -0700
committerZhen Sun <zhensun@google.com>2020-06-19 00:58:11 +0000
commit3b0ff7e58dadfb9be729c2f00df26c23472b8807 (patch)
treee18dd90ba2e7c49e4bc6e54a047eb30dcd99e0c7
parent42c16051211ec3e4fed941db8ece7e67a9b37809 (diff)
downloadTvSettings-3b0ff7e58dadfb9be729c2f00df26c23472b8807.tar.gz
Update energy saver options
The options are updated as following: [Before] 15m, 30m, 1h, 3h, 6h, 12h, never [After] 15m, 30m, 1h, 4h, 8h, 12h, 24h, never Also added some logic to round sleep timeout to the closest one in the predefined options in case it is set to be some other value by OEM overlay or legacy build. Bug: 157174386 Test: options are updated in local test Change-Id: Idf324f1a39884a182b2075800e2edbb65ebba4f3
-rw-r--r--Settings/res/values/arrays.xml11
-rw-r--r--Settings/src/com/android/tv/settings/device/display/daydream/EnergySaverFragment.java42
2 files changed, 42 insertions, 11 deletions
diff --git a/Settings/res/values/arrays.xml b/Settings/res/values/arrays.xml
index 1aef48768..14f6beb3e 100644
--- a/Settings/res/values/arrays.xml
+++ b/Settings/res/values/arrays.xml
@@ -44,9 +44,10 @@
<item>15 minutes</item>
<item>30 minutes</item>
<item>1 hour</item>
- <item>3 hours</item>
- <item>6 hours</item>
+ <item>4 hours</item>
+ <item>8 hours</item>
<item>12 hours</item>
+ <item>24 hours</item>
<item>Never</item>
</string-array>
@@ -59,12 +60,14 @@
<!-- Do not translate. -->
<item>3600000</item>
<!-- Do not translate. -->
- <item>10800000</item>
+ <item>14400000</item>
<!-- Do not translate. -->
- <item>21600000</item>
+ <item>28800000</item>
<!-- Do not translate. -->
<item>43200000</item>
<!-- Do not translate. -->
+ <item>86400000</item>
+ <!-- Do not translate. -->
<item>-1</item>
</string-array>
diff --git a/Settings/src/com/android/tv/settings/device/display/daydream/EnergySaverFragment.java b/Settings/src/com/android/tv/settings/device/display/daydream/EnergySaverFragment.java
index e7a3e3419..fda5de61a 100644
--- a/Settings/src/com/android/tv/settings/device/display/daydream/EnergySaverFragment.java
+++ b/Settings/src/com/android/tv/settings/device/display/daydream/EnergySaverFragment.java
@@ -44,7 +44,7 @@ public class EnergySaverFragment extends SettingsPreferenceFragment implements
private static final String TAG = "EnergySaverFragment";
private static final String KEY_SLEEP_TIME = "sleepTime";
private static final String KEY_ALLOW_TURN_SCREEN_OFF = "allowTurnScreenOff";
- private static final int DEFAULT_SLEEP_TIME_MS = (int) (3 * DateUtils.HOUR_IN_MILLIS);
+ private static final int DEFAULT_SLEEP_TIME_MS = (int) (24 * DateUtils.HOUR_IN_MILLIS);
private SwitchPreference mAllowTurnScreenOffWithWakeLockPref;
private ListPreference mSleepTimePref;
@@ -57,9 +57,17 @@ public class EnergySaverFragment extends SettingsPreferenceFragment implements
updateAllowTurnScreenOffWithWakeLockPref();
mSleepTimePref = findPreference(KEY_SLEEP_TIME);
if (allowTurnOffWithWakeLock()) {
- mSleepTimePref.setValue(String.valueOf(getAttentiveSleepTime()));
+ int validatedAttentiveSleepTime = getValidatedTimeout(getAttentiveSleepTime());
+ mSleepTimePref.setValue(String.valueOf(validatedAttentiveSleepTime));
+ if (getAttentiveSleepTime() != validatedAttentiveSleepTime) {
+ setAttentiveSleepTime(validatedAttentiveSleepTime);
+ }
} else {
- mSleepTimePref.setValue(String.valueOf(getSleepTime()));
+ int validatedSleepTime = getValidatedTimeout(getSleepTime());
+ mSleepTimePref.setValue(String.valueOf(validatedSleepTime));
+ if (getSleepTime() != validatedSleepTime) {
+ setSleepTime(validatedSleepTime);
+ }
}
mSleepTimePref.setOnPreferenceChangeListener(this);
mSleepTimePref.setOnPreferenceClickListener(
@@ -148,6 +156,30 @@ public class EnergySaverFragment extends SettingsPreferenceFragment implements
Settings.Secure.putInt(getActivity().getContentResolver(), ATTENTIVE_TIMEOUT, ms);
}
+ // The SLEEP_TIMEOUT and ATTENTIVE_TIMEOUT could be defined in overlay by OEMs. We validate the
+ // value to make sure that we select from the predefined options. If the value from overlay is
+ // not one of the predefined options, we round it to the closest predefined value, except -1.
+ private int getValidatedTimeout(int purposedTimeout) {
+ int validatedTimeout = DEFAULT_SLEEP_TIME_MS;
+ if (purposedTimeout < 0) {
+ return -1;
+ }
+ String[] optionsString = getResources().getStringArray(R.array.screen_off_timeout_values);
+ // Find the value from the predefined values that is closest to the proposed value except -1
+ int diff = Integer.MAX_VALUE;
+ for (String option : optionsString) {
+ if (Integer.parseInt(option) != -1) {
+ int currentDiff = Math.abs(purposedTimeout - Integer.parseInt(option));
+ if (currentDiff < diff) {
+ diff = currentDiff;
+ validatedTimeout = Integer.parseInt(option);
+ }
+ }
+ }
+ return validatedTimeout;
+ }
+
+ // TODO(b/158783050): update logging for new options 4H, 8H, 24H.
// Map @array/screen_off_timeout_entries to defined log enum
private int getSleepTimeEntryId(int sleepTimeValue) {
switch(sleepTimeValue) {
@@ -159,10 +191,6 @@ public class EnergySaverFragment extends SettingsPreferenceFragment implements
return TvSettingsEnums.SYSTEM_ENERGYSAVER_START_DELAY_30M;
case 3600000:
return TvSettingsEnums.SYSTEM_ENERGYSAVER_START_DELAY_1H;
- case 10800000:
- return TvSettingsEnums.SYSTEM_ENERGYSAVER_START_DELAY_3H;
- case 21600000:
- return TvSettingsEnums.SYSTEM_ENERGYSAVER_START_DELAY_6H;
case 43200000:
return TvSettingsEnums.SYSTEM_ENERGYSAVER_START_DELAY_12H;
default: