Loading core/java/android/os/vibrator/flags.aconfig +0 −7 Original line number Diff line number Diff line package: "android.os.vibrator" container: "system" flag { namespace: "haptics" name: "adaptive_haptics_enabled" description: "Enables the adaptive haptics feature" bug: "305961689" } flag { namespace: "haptics" name: "vibration_xml_apis" Loading services/core/java/com/android/server/vibrator/VibrationScaler.java +1 −3 Original line number Diff line number Diff line Loading @@ -129,9 +129,7 @@ final class VibrationScaler { * @return The adaptive haptics scale. */ public float getAdaptiveHapticsScale(int usageHint) { return Flags.adaptiveHapticsEnabled() ? mAdaptiveHapticsScales.get(usageHint, ADAPTIVE_SCALE_NONE) : ADAPTIVE_SCALE_NONE; return mAdaptiveHapticsScales.get(usageHint, ADAPTIVE_SCALE_NONE); } /** Loading services/core/java/com/android/server/vibrator/VibrationStepConductor.java +2 −3 Original line number Diff line number Diff line Loading @@ -193,9 +193,8 @@ final class VibrationStepConductor { expectIsVibrationThread(true); } if (Flags.adaptiveHapticsEnabled()) { waitForVibrationParamsIfRequired(); } // Scale resolves the default amplitudes from the effect before scaling them. mVibration.scaleEffects(mVibrationScaler); Loading services/core/java/com/android/server/vibrator/VibratorManagerService.java +1 −2 Original line number Diff line number Diff line Loading @@ -1199,8 +1199,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { DeviceAdapter deviceAdapter, boolean isInSession) { CompletableFuture<Void> requestVibrationParamsFuture = null; if (Flags.adaptiveHapticsEnabled() && mVibratorControlService.shouldRequestVibrationParams( if (mVibratorControlService.shouldRequestVibrationParams( vib.callerInfo.attrs.getUsage())) { requestVibrationParamsFuture = mVibratorControlService.triggerVibrationParamsRequest( Loading services/tests/vibrator/src/com/android/server/vibrator/VibrationScalerTest.java +1 −42 Original line number Diff line number Diff line Loading @@ -270,7 +270,6 @@ public class VibrationScalerTest { } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void testAdaptiveHapticsScale_withAdaptiveHapticsAvailable() { VibrationScaler scaler = createSystemReadyScaler(); scaler.updateAdaptiveHapticsScale(USAGE_TOUCH, 0.5f); Loading @@ -282,18 +281,6 @@ public class VibrationScalerTest { assertEquals(0.2f, scaler.getAdaptiveHapticsScale(USAGE_RINGTONE)); } @Test @DisableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void testAdaptiveHapticsScale_flagDisabled_adaptiveHapticScaleAlwaysNone() { VibrationScaler scaler = createSystemReadyScaler(); scaler.updateAdaptiveHapticsScale(USAGE_TOUCH, 0.5f); scaler.updateAdaptiveHapticsScale(USAGE_RINGTONE, 0.2f); assertEquals(1f, scaler.getAdaptiveHapticsScale(USAGE_TOUCH)); assertEquals(1f, scaler.getAdaptiveHapticsScale(USAGE_RINGTONE)); assertEquals(1f, scaler.getAdaptiveHapticsScale(USAGE_NOTIFICATION)); } @Test public void scale_withPrebakedSegment_setsEffectStrengthBasedOnSettings() { mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_MEDIUM); Loading Loading @@ -490,7 +477,6 @@ public class VibrationScalerTest { } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void scale_withAdaptiveHaptics_scalesVibrationsCorrectly() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_HIGH); Loading @@ -512,30 +498,6 @@ public class VibrationScalerTest { } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void scale_clearAdaptiveHapticsScales_clearsAllCachedScales() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_HIGH); VibrationScaler scaler = createSystemReadyScaler(); scaler.updateAdaptiveHapticsScale(USAGE_RINGTONE, 0.5f); scaler.updateAdaptiveHapticsScale(USAGE_NOTIFICATION, 0.5f); scaler.clearAdaptiveHapticsScales(); StepSegment scaled = getFirstSegment(scaler.scale( VibrationEffect.createOneShot(128, 128), USAGE_RINGTONE)); // Ringtone scales up. assertTrue(scaled.getAmplitude() > 0.5); scaled = getFirstSegment(scaler.scale( VibrationEffect.createWaveform(new long[]{128}, new int[]{128}, -1), USAGE_NOTIFICATION)); // Notification scales up. assertTrue(scaled.getAmplitude() > 0.5); } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void scale_removeAdaptiveHapticsScale_removesCachedScale() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_HIGH); Loading @@ -558,10 +520,7 @@ public class VibrationScalerTest { } @Test @EnableFlags({ android.os.vibrator.Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED, android.os.vibrator.Flags.FLAG_VENDOR_VIBRATION_EFFECTS, }) @EnableFlags(android.os.vibrator.Flags.FLAG_VENDOR_VIBRATION_EFFECTS) public void scale_adaptiveHapticsOnVendorEffect_setsAdaptiveScaleParameter() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); VibrationScaler scaler = createSystemReadyScaler(); Loading Loading
core/java/android/os/vibrator/flags.aconfig +0 −7 Original line number Diff line number Diff line package: "android.os.vibrator" container: "system" flag { namespace: "haptics" name: "adaptive_haptics_enabled" description: "Enables the adaptive haptics feature" bug: "305961689" } flag { namespace: "haptics" name: "vibration_xml_apis" Loading
services/core/java/com/android/server/vibrator/VibrationScaler.java +1 −3 Original line number Diff line number Diff line Loading @@ -129,9 +129,7 @@ final class VibrationScaler { * @return The adaptive haptics scale. */ public float getAdaptiveHapticsScale(int usageHint) { return Flags.adaptiveHapticsEnabled() ? mAdaptiveHapticsScales.get(usageHint, ADAPTIVE_SCALE_NONE) : ADAPTIVE_SCALE_NONE; return mAdaptiveHapticsScales.get(usageHint, ADAPTIVE_SCALE_NONE); } /** Loading
services/core/java/com/android/server/vibrator/VibrationStepConductor.java +2 −3 Original line number Diff line number Diff line Loading @@ -193,9 +193,8 @@ final class VibrationStepConductor { expectIsVibrationThread(true); } if (Flags.adaptiveHapticsEnabled()) { waitForVibrationParamsIfRequired(); } // Scale resolves the default amplitudes from the effect before scaling them. mVibration.scaleEffects(mVibrationScaler); Loading
services/core/java/com/android/server/vibrator/VibratorManagerService.java +1 −2 Original line number Diff line number Diff line Loading @@ -1199,8 +1199,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { DeviceAdapter deviceAdapter, boolean isInSession) { CompletableFuture<Void> requestVibrationParamsFuture = null; if (Flags.adaptiveHapticsEnabled() && mVibratorControlService.shouldRequestVibrationParams( if (mVibratorControlService.shouldRequestVibrationParams( vib.callerInfo.attrs.getUsage())) { requestVibrationParamsFuture = mVibratorControlService.triggerVibrationParamsRequest( Loading
services/tests/vibrator/src/com/android/server/vibrator/VibrationScalerTest.java +1 −42 Original line number Diff line number Diff line Loading @@ -270,7 +270,6 @@ public class VibrationScalerTest { } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void testAdaptiveHapticsScale_withAdaptiveHapticsAvailable() { VibrationScaler scaler = createSystemReadyScaler(); scaler.updateAdaptiveHapticsScale(USAGE_TOUCH, 0.5f); Loading @@ -282,18 +281,6 @@ public class VibrationScalerTest { assertEquals(0.2f, scaler.getAdaptiveHapticsScale(USAGE_RINGTONE)); } @Test @DisableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void testAdaptiveHapticsScale_flagDisabled_adaptiveHapticScaleAlwaysNone() { VibrationScaler scaler = createSystemReadyScaler(); scaler.updateAdaptiveHapticsScale(USAGE_TOUCH, 0.5f); scaler.updateAdaptiveHapticsScale(USAGE_RINGTONE, 0.2f); assertEquals(1f, scaler.getAdaptiveHapticsScale(USAGE_TOUCH)); assertEquals(1f, scaler.getAdaptiveHapticsScale(USAGE_RINGTONE)); assertEquals(1f, scaler.getAdaptiveHapticsScale(USAGE_NOTIFICATION)); } @Test public void scale_withPrebakedSegment_setsEffectStrengthBasedOnSettings() { mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_MEDIUM); Loading Loading @@ -490,7 +477,6 @@ public class VibrationScalerTest { } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void scale_withAdaptiveHaptics_scalesVibrationsCorrectly() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_HIGH); Loading @@ -512,30 +498,6 @@ public class VibrationScalerTest { } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void scale_clearAdaptiveHapticsScales_clearsAllCachedScales() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_HIGH); VibrationScaler scaler = createSystemReadyScaler(); scaler.updateAdaptiveHapticsScale(USAGE_RINGTONE, 0.5f); scaler.updateAdaptiveHapticsScale(USAGE_NOTIFICATION, 0.5f); scaler.clearAdaptiveHapticsScales(); StepSegment scaled = getFirstSegment(scaler.scale( VibrationEffect.createOneShot(128, 128), USAGE_RINGTONE)); // Ringtone scales up. assertTrue(scaled.getAmplitude() > 0.5); scaled = getFirstSegment(scaler.scale( VibrationEffect.createWaveform(new long[]{128}, new int[]{128}, -1), USAGE_NOTIFICATION)); // Notification scales up. assertTrue(scaled.getAmplitude() > 0.5); } @Test @EnableFlags(Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED) public void scale_removeAdaptiveHapticsScale_removesCachedScale() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); mConfigBuilder.setDefaultNotificationVibrationIntensity(VIBRATION_INTENSITY_HIGH); Loading @@ -558,10 +520,7 @@ public class VibrationScalerTest { } @Test @EnableFlags({ android.os.vibrator.Flags.FLAG_ADAPTIVE_HAPTICS_ENABLED, android.os.vibrator.Flags.FLAG_VENDOR_VIBRATION_EFFECTS, }) @EnableFlags(android.os.vibrator.Flags.FLAG_VENDOR_VIBRATION_EFFECTS) public void scale_adaptiveHapticsOnVendorEffect_setsAdaptiveScaleParameter() { mConfigBuilder.setDefaultRingVibrationIntensity(VIBRATION_INTENSITY_HIGH); VibrationScaler scaler = createSystemReadyScaler(); Loading