diff --git a/src/com/android/settings/accessibility/VibrationPreferenceFragment.java b/src/com/android/settings/accessibility/VibrationPreferenceFragment.java index 480041a67198359279f67736c3f3ac6f734300d4..1803a8bafe23bca4dcd7af0631cf8f1b646a1f3d 100644 --- a/src/com/android/settings/accessibility/VibrationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/VibrationPreferenceFragment.java @@ -128,6 +128,20 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm Settings.System.putInt(getContext().getContentResolver(), vibrationEnabledSetting, vibrationEnabled ? 1 : 0); } + + int previousIntensity = Settings.System.getInt(getContext().getContentResolver(), + getVibrationIntensitySetting(), 0); + if (vibrationEnabled && previousIntensity == candidate.getIntensity()) { + // We can't play preview effect here for all cases because that causes a data + // race (VibratorService may access intensity settings before these settings + // are updated). But we can't just play it in intensity settings update + // observer, because the intensity settings are not changed if we turn the + // vibration off, then on. + // + // In this case we sould play the preview here. + // To be refactored in b/132952771 + playVibrationPreview(); + } } } // There are two conditions that need to change the intensity. @@ -137,15 +151,6 @@ public abstract class VibrationPreferenceFragment extends RadioButtonPickerFragm // Update vibration intensity setting Settings.System.putInt(getContext().getContentResolver(), getVibrationIntensitySetting(), candidate.getIntensity()); - } else { - // We can't play preview effect here for all cases because that causes a data race - // (VibratorService may access intensity settings before these settings are updated). - // But we can't just play it in intensity settings update observer, because the - // intensity settings are not changed if we turn the vibration off, then on. - // - // In this case we sould play the preview here. - // To be refactored in b/132952771 - playVibrationPreview(); } }