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.
// 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();
}
}