diff options
author | Jack Yu <jackyu@google.com> | 2020-05-26 23:11:14 -0700 |
---|---|---|
committer | Jack Yu <jackyu@google.com> | 2020-05-27 12:02:24 -0700 |
commit | 5f066330fb5911a60518fcc3cae10f592660b6e6 (patch) | |
tree | cded13874098f6829fec1b86c2e4d40a1f838338 /src | |
parent | 3db43b7ae0678b81b3e7a33ee5f6c14f599837f1 (diff) | |
download | CellBroadcastReceiver-5f066330fb5911a60518fcc3cae10f592660b6e6.tar.gz |
Added few more changes for Hong Kong
1. Disable alert message copying.
2. When override DND is enabled, always enable vibration.
Bug: 154533160
Test: Manual
Change-Id: I1345b89c13499796788f0db46778b8b2c3279f24
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() { |