diff options
author | Zhen Sun <zhensun@google.com> | 2020-06-11 15:59:24 -0700 |
---|---|---|
committer | Zhen Sun <zhensun@google.com> | 2020-06-19 00:58:11 +0000 |
commit | 3b0ff7e58dadfb9be729c2f00df26c23472b8807 (patch) | |
tree | e18dd90ba2e7c49e4bc6e54a047eb30dcd99e0c7 | |
parent | 42c16051211ec3e4fed941db8ece7e67a9b37809 (diff) | |
download | TvSettings-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.xml | 11 | ||||
-rw-r--r-- | Settings/src/com/android/tv/settings/device/display/daydream/EnergySaverFragment.java | 42 |
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: |