diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-05-28 16:28:27 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-28 16:28:27 +0000 |
commit | 33c8abd0b6ce63b87f5c0131923ebe79a8522ab6 (patch) | |
tree | d839f291cc53444f8da41e72892aeb8bffeb1942 /src | |
parent | 85db2b0dff1c2532a2c6f1c4ffa9b6ed754fe4aa (diff) | |
parent | 5f066330fb5911a60518fcc3cae10f592660b6e6 (diff) | |
download | CellBroadcastReceiver-33c8abd0b6ce63b87f5c0131923ebe79a8522ab6.tar.gz |
Merge "Added few more changes for Hong Kong" into rvc-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java | 3 | ||||
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java | 44 |
2 files changed, 41 insertions, 6 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java index 0159dfeb6..d8cc2c499 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java @@ -326,7 +326,8 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI // retrieve whether to play alert sound in full volume regardless Do Not Disturb is on. mOverrideDnd = intent.getBooleanExtra(ALERT_AUDIO_OVERRIDE_DND_EXTRA, false); // retrieve the vibrate settings from cellbroadcast receiver settings. - mEnableVibrate = prefs.getBoolean(CellBroadcastSettings.KEY_ENABLE_ALERT_VIBRATE, true); + mEnableVibrate = prefs.getBoolean(CellBroadcastSettings.KEY_ENABLE_ALERT_VIBRATE, true) + || mOverrideDnd; // retrieve the vibration patterns. mVibrationPattern = intent.getIntArrayExtra(ALERT_AUDIO_VIBRATION_PATTERN_EXTRA); diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index 1f424ba63..7fd57ecda 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -187,6 +187,7 @@ public class CellBroadcastSettings extends Activity { private TwoStatePreference mAreaUpdateInfoCheckBox; private TwoStatePreference mTestCheckBox; private TwoStatePreference mStateLocalTestCheckBox; + private TwoStatePreference mEnableVibrateCheckBox; private Preference mAlertHistory; private PreferenceCategory mAlertCategory; private PreferenceCategory mAlertPreferencesCategory; @@ -254,6 +255,7 @@ public class CellBroadcastSettings extends Activity { mAlertHistory = findPreference(KEY_EMERGENCY_ALERT_HISTORY); mReceiveCmasInSecondLanguageCheckBox = (TwoStatePreference) findPreference (KEY_RECEIVE_CMAS_IN_SECOND_LANGUAGE); + mEnableVibrateCheckBox = findPreference(KEY_ENABLE_ALERT_VIBRATE); // Show checkbox for Presidential alerts in settings mPresidentialCheckBox = (TwoStatePreference) @@ -364,15 +366,17 @@ public class CellBroadcastSettings extends Activity { startConfigServiceListener); } - if (mOverrideDndCheckBox != null - && !sp.getBoolean(KEY_OVERRIDE_DND_SETTINGS_CHANGED, false)) { - // If the user hasn't changed this settings yet, use the default settings from - // resource overlay. - mOverrideDndCheckBox.setChecked(res.getBoolean(R.bool.override_dnd_default)); + if (mOverrideDndCheckBox != null) { + if (!sp.getBoolean(KEY_OVERRIDE_DND_SETTINGS_CHANGED, false)) { + // If the user hasn't changed this settings yet, use the default settings + // from resource overlay. + mOverrideDndCheckBox.setChecked(res.getBoolean(R.bool.override_dnd_default)); + } mOverrideDndCheckBox.setOnPreferenceChangeListener( (pref, newValue) -> { sp.edit().putBoolean(KEY_OVERRIDE_DND_SETTINGS_CHANGED, true).apply(); + updateVibrationPreference((boolean) newValue); return true; }); } @@ -387,10 +391,30 @@ public class CellBroadcastSettings extends Activity { }); } + updateVibrationPreference(sp.getBoolean(CellBroadcastSettings.KEY_OVERRIDE_DND, + false)); updatePreferenceVisibility(); } /** + * Update the vibration preference based on override DND. If DND is overridden, then do + * not allow users to turn off vibration. + * + * @param overrideDnd {@code true} if the alert will be played at full volume, regardless + * DND settings. + */ + private void updateVibrationPreference(boolean overrideDnd) { + if (mEnableVibrateCheckBox != null) { + if (overrideDnd) { + // If DND is enabled, always enable vibration. + mEnableVibrateCheckBox.setChecked(true); + } + // Grey out the preference if DND is overridden. + mEnableVibrateCheckBox.setEnabled(!overrideDnd); + } + } + + /** * Dynamically update each preference's visibility based on configuration. */ private void updatePreferenceVisibility() { @@ -460,6 +484,16 @@ public class CellBroadcastSettings extends Activity { if (mOverrideDndCheckBox != null) { mOverrideDndCheckBox.setVisible(res.getBoolean(R.bool.show_override_dnd_settings)); } + + if (mEnableVibrateCheckBox != null) { + // Only show vibrate toggle when override DND toggle is available to users, or when + // override DND default is turned off. + // In some countries, override DND is always on, which means vibration is always on. + // In that case, no need to show vibration toggle for users. + mEnableVibrateCheckBox.setVisible( + res.getBoolean(R.bool.show_override_dnd_settings) + || !res.getBoolean(R.bool.override_dnd_default)); + } } private void initReminderIntervalList() { |