Loading core/java/android/os/vibrator/VibrationConfig.java +7 −6 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public class VibrationConfig { private final boolean mDefaultKeyboardVibrationEnabled; private final boolean mHasFixedKeyboardAmplitude; private final boolean mKeyboardVibrationSettingsSupported; /** @hide */ public VibrationConfig(@Nullable Resources resources) { Loading @@ -89,8 +89,8 @@ public class VibrationConfig { com.android.internal.R.bool.config_ignoreVibrationsOnWirelessCharger, false); mDefaultKeyboardVibrationEnabled = loadBoolean(resources, com.android.internal.R.bool.config_defaultKeyboardVibrationEnabled, true); mHasFixedKeyboardAmplitude = loadFloat(resources, com.android.internal.R.dimen.config_keyboardHapticFeedbackFixedAmplitude, -1) > 0; mKeyboardVibrationSettingsSupported = loadBoolean(resources, com.android.internal.R.bool.config_keyboardVibrationSettingsSupported, false); mDefaultAlarmVibrationIntensity = loadDefaultIntensity(resources, com.android.internal.R.integer.config_defaultAlarmVibrationIntensity); Loading Loading @@ -202,11 +202,11 @@ public class VibrationConfig { } /** * Whether the device has a fixed amplitude for keyboard. * Whether the device support keyboard vibration settings. * @hide */ public boolean hasFixedKeyboardAmplitude() { return mHasFixedKeyboardAmplitude; public boolean isKeyboardVibrationSettingsSupported() { return mKeyboardVibrationSettingsSupported; } /** Get the default vibration intensity for given usage. */ Loading Loading @@ -249,6 +249,7 @@ public class VibrationConfig { + ", mDefaultNotificationIntensity=" + mDefaultNotificationVibrationIntensity + ", mDefaultRingIntensity=" + mDefaultRingVibrationIntensity + ", mDefaultKeyboardVibrationEnabled=" + mDefaultKeyboardVibrationEnabled + ", mKeyboardVibrationSettingsSupported=" + mKeyboardVibrationSettingsSupported + "}"; } Loading core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -4136,6 +4136,9 @@ <!-- The default value for keyboard vibration toggle in settings. --> <bool name="config_defaultKeyboardVibrationEnabled">true</bool> <!-- Indicating if keyboard vibration settings supported or not. --> <bool name="config_keyboardVibrationSettingsSupported">false</bool> <!-- If the device should still vibrate even in low power mode, for certain priority vibrations (e.g. accessibility, alarms). This is mainly for Wear devices that don't have speakers. --> <bool name="config_allowPriorityVibrationsInLowPowerMode">false</bool> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2126,6 +2126,7 @@ <java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" /> <java-symbol type="dimen" name="config_keyboardHapticFeedbackFixedAmplitude" /> <java-symbol type="bool" name="config_defaultKeyboardVibrationEnabled" /> <java-symbol type="bool" name="config_keyboardVibrationSettingsSupported" /> <java-symbol type="integer" name="config_vibrationWaveformRampStepDuration" /> <java-symbol type="bool" name="config_ignoreVibrationsOnWirelessCharger" /> <java-symbol type="integer" name="config_vibrationWaveformRampDownDuration" /> Loading services/core/java/com/android/server/vibrator/VibrationSettings.java +2 −1 Original line number Diff line number Diff line Loading @@ -532,7 +532,8 @@ final class VibrationSettings { return false; } if (Flags.keyboardCategoryEnabled() && mVibrationConfig.hasFixedKeyboardAmplitude()) { if (Flags.keyboardCategoryEnabled() && mVibrationConfig.isKeyboardVibrationSettingsSupported()) { int category = callerInfo.attrs.getCategory(); if (usage == USAGE_TOUCH && category == CATEGORY_KEYBOARD) { // Keyboard touch has a different user setting. Loading services/tests/vibrator/src/com/android/server/vibrator/VibrationSettingsTest.java +6 −6 Original line number Diff line number Diff line Loading @@ -605,7 +605,7 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_withKeyboardSettingsOff_shouldIgnoreKeyboardVibration() { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_MEDIUM); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 0 /* OFF*/); setHasFixedKeyboardAmplitudeIntensity(true); setKeyboardVibrationSettingsSupported(true); // Keyboard touch ignored. assertVibrationIgnoredForAttributes( Loading @@ -630,7 +630,7 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_withKeyboardSettingsOn_shouldNotIgnoreKeyboardVibration() { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setHasFixedKeyboardAmplitudeIntensity(true); setKeyboardVibrationSettingsSupported(true); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -645,10 +645,10 @@ public class VibrationSettingsTest { @Test @RequiresFlagsEnabled(Flags.FLAG_KEYBOARD_CATEGORY_ENABLED) public void shouldIgnoreVibration_noFixedKeyboardAmplitude_ignoresKeyboardTouchVibration() { public void shouldIgnoreVibration_notSupportKeyboardVibration_ignoresKeyboardTouchVibration() { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setHasFixedKeyboardAmplitudeIntensity(false); setKeyboardVibrationSettingsSupported(false); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading Loading @@ -974,8 +974,8 @@ public class VibrationSettingsTest { when(mVibrationConfigMock.ignoreVibrationsOnWirelessCharger()).thenReturn(ignore); } private void setHasFixedKeyboardAmplitudeIntensity(boolean hasFixedAmplitude) { when(mVibrationConfigMock.hasFixedKeyboardAmplitude()).thenReturn(hasFixedAmplitude); private void setKeyboardVibrationSettingsSupported(boolean supported) { when(mVibrationConfigMock.isKeyboardVibrationSettingsSupported()).thenReturn(supported); } private void deleteUserSetting(String settingName) { Loading Loading
core/java/android/os/vibrator/VibrationConfig.java +7 −6 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public class VibrationConfig { private final boolean mDefaultKeyboardVibrationEnabled; private final boolean mHasFixedKeyboardAmplitude; private final boolean mKeyboardVibrationSettingsSupported; /** @hide */ public VibrationConfig(@Nullable Resources resources) { Loading @@ -89,8 +89,8 @@ public class VibrationConfig { com.android.internal.R.bool.config_ignoreVibrationsOnWirelessCharger, false); mDefaultKeyboardVibrationEnabled = loadBoolean(resources, com.android.internal.R.bool.config_defaultKeyboardVibrationEnabled, true); mHasFixedKeyboardAmplitude = loadFloat(resources, com.android.internal.R.dimen.config_keyboardHapticFeedbackFixedAmplitude, -1) > 0; mKeyboardVibrationSettingsSupported = loadBoolean(resources, com.android.internal.R.bool.config_keyboardVibrationSettingsSupported, false); mDefaultAlarmVibrationIntensity = loadDefaultIntensity(resources, com.android.internal.R.integer.config_defaultAlarmVibrationIntensity); Loading Loading @@ -202,11 +202,11 @@ public class VibrationConfig { } /** * Whether the device has a fixed amplitude for keyboard. * Whether the device support keyboard vibration settings. * @hide */ public boolean hasFixedKeyboardAmplitude() { return mHasFixedKeyboardAmplitude; public boolean isKeyboardVibrationSettingsSupported() { return mKeyboardVibrationSettingsSupported; } /** Get the default vibration intensity for given usage. */ Loading Loading @@ -249,6 +249,7 @@ public class VibrationConfig { + ", mDefaultNotificationIntensity=" + mDefaultNotificationVibrationIntensity + ", mDefaultRingIntensity=" + mDefaultRingVibrationIntensity + ", mDefaultKeyboardVibrationEnabled=" + mDefaultKeyboardVibrationEnabled + ", mKeyboardVibrationSettingsSupported=" + mKeyboardVibrationSettingsSupported + "}"; } Loading
core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -4136,6 +4136,9 @@ <!-- The default value for keyboard vibration toggle in settings. --> <bool name="config_defaultKeyboardVibrationEnabled">true</bool> <!-- Indicating if keyboard vibration settings supported or not. --> <bool name="config_keyboardVibrationSettingsSupported">false</bool> <!-- If the device should still vibrate even in low power mode, for certain priority vibrations (e.g. accessibility, alarms). This is mainly for Wear devices that don't have speakers. --> <bool name="config_allowPriorityVibrationsInLowPowerMode">false</bool> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2126,6 +2126,7 @@ <java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" /> <java-symbol type="dimen" name="config_keyboardHapticFeedbackFixedAmplitude" /> <java-symbol type="bool" name="config_defaultKeyboardVibrationEnabled" /> <java-symbol type="bool" name="config_keyboardVibrationSettingsSupported" /> <java-symbol type="integer" name="config_vibrationWaveformRampStepDuration" /> <java-symbol type="bool" name="config_ignoreVibrationsOnWirelessCharger" /> <java-symbol type="integer" name="config_vibrationWaveformRampDownDuration" /> Loading
services/core/java/com/android/server/vibrator/VibrationSettings.java +2 −1 Original line number Diff line number Diff line Loading @@ -532,7 +532,8 @@ final class VibrationSettings { return false; } if (Flags.keyboardCategoryEnabled() && mVibrationConfig.hasFixedKeyboardAmplitude()) { if (Flags.keyboardCategoryEnabled() && mVibrationConfig.isKeyboardVibrationSettingsSupported()) { int category = callerInfo.attrs.getCategory(); if (usage == USAGE_TOUCH && category == CATEGORY_KEYBOARD) { // Keyboard touch has a different user setting. Loading
services/tests/vibrator/src/com/android/server/vibrator/VibrationSettingsTest.java +6 −6 Original line number Diff line number Diff line Loading @@ -605,7 +605,7 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_withKeyboardSettingsOff_shouldIgnoreKeyboardVibration() { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_MEDIUM); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 0 /* OFF*/); setHasFixedKeyboardAmplitudeIntensity(true); setKeyboardVibrationSettingsSupported(true); // Keyboard touch ignored. assertVibrationIgnoredForAttributes( Loading @@ -630,7 +630,7 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_withKeyboardSettingsOn_shouldNotIgnoreKeyboardVibration() { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setHasFixedKeyboardAmplitudeIntensity(true); setKeyboardVibrationSettingsSupported(true); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -645,10 +645,10 @@ public class VibrationSettingsTest { @Test @RequiresFlagsEnabled(Flags.FLAG_KEYBOARD_CATEGORY_ENABLED) public void shouldIgnoreVibration_noFixedKeyboardAmplitude_ignoresKeyboardTouchVibration() { public void shouldIgnoreVibration_notSupportKeyboardVibration_ignoresKeyboardTouchVibration() { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setHasFixedKeyboardAmplitudeIntensity(false); setKeyboardVibrationSettingsSupported(false); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading Loading @@ -974,8 +974,8 @@ public class VibrationSettingsTest { when(mVibrationConfigMock.ignoreVibrationsOnWirelessCharger()).thenReturn(ignore); } private void setHasFixedKeyboardAmplitudeIntensity(boolean hasFixedAmplitude) { when(mVibrationConfigMock.hasFixedKeyboardAmplitude()).thenReturn(hasFixedAmplitude); private void setKeyboardVibrationSettingsSupported(boolean supported) { when(mVibrationConfigMock.isKeyboardVibrationSettingsSupported()).thenReturn(supported); } private void deleteUserSetting(String settingName) { Loading