Fix feedback for main haptic settings toggle

The SettingsMainSwitchPreferenceController might trigger a state change
twice on the page main switch when the user toggles the setting value.

Make sure we only trigger haptic feedback when the state is changing
between untoggled to toggled to avoid a double-click feedback.

No flag for small bug fix, no UI changes.

Fix: 338334977
Test: enable the "Use vibration & haptics" settings and feel a single
      click feedback
Change-Id: I0c22b99bcb40f35ebe09c153133c354306ed1ff0
This commit is contained in:
Lais Andrade
2024-05-03 14:50:07 +01:00
parent 1227eb311f
commit 699bbe760d

View File

@@ -83,11 +83,14 @@ public class VibrationMainSwitchPreferenceController extends SettingsMainSwitchP
@Override @Override
public boolean setChecked(boolean isChecked) { public boolean setChecked(boolean isChecked) {
// The main switch change can be triggered by both the user click and the
// SettingsMainSwitchPreferenceController state change. Make sure we only do it once.
boolean wasChecked = isChecked();
boolean success = Settings.System.putInt(mContext.getContentResolver(), boolean success = Settings.System.putInt(mContext.getContentResolver(),
VibrationPreferenceConfig.MAIN_SWITCH_SETTING_KEY, VibrationPreferenceConfig.MAIN_SWITCH_SETTING_KEY,
isChecked ? ON : OFF); isChecked ? ON : OFF);
if (success && isChecked) { if (success && !wasChecked && isChecked) {
// Play a haptic as preview for the main toggle only when touch feedback is enabled. // Play a haptic as preview for the main toggle only when touch feedback is enabled.
VibrationPreferenceConfig.playVibrationPreview( VibrationPreferenceConfig.playVibrationPreview(
mVibrator, VibrationAttributes.USAGE_TOUCH); mVibrator, VibrationAttributes.USAGE_TOUCH);