Add fallback for TEXTURE_TICK
TEXTURE_TICK vibration effect should fallback to TICK effect if not
supported by HAL (and, if necessary, fallback further to TICK effect
fallback)
Bug: 129275029
Test: atest VibrationEffectTest
Test: adb cmd vibrator prebaked 21 on a phone which does not support
TEXTURE_TICK - you should feel the device vibrates
Change-Id: I788b0835312e2b2ab590c26ef2f9961fe542cf77
(cherry picked from commit bebf04aaaf9ba3ceef2695d2c8e5d0bfcc30703b)
diff --git a/api/test-current.txt b/api/test-current.txt
index 7121a54..3be902e 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1895,6 +1895,7 @@
field public static final int EFFECT_STRENGTH_LIGHT = 0; // 0x0
field public static final int EFFECT_STRENGTH_MEDIUM = 1; // 0x1
field public static final int EFFECT_STRENGTH_STRONG = 2; // 0x2
+ field public static final int EFFECT_TEXTURE_TICK = 21; // 0x15
field public static final int EFFECT_THUD = 3; // 0x3
field public static final int[] RINGTONES;
}
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java
index 7958ddd..035061b 100644
--- a/core/java/android/os/VibrationEffect.java
+++ b/core/java/android/os/VibrationEffect.java
@@ -104,6 +104,7 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_TEXTURE_TICK = Effect.TEXTURE_TICK;
/** {@hide} */
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index 5d0fa26..ba56261 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -236,6 +236,7 @@
case VibrationEffect.EFFECT_CLICK:
case VibrationEffect.EFFECT_DOUBLE_CLICK:
case VibrationEffect.EFFECT_HEAVY_CLICK:
+ case VibrationEffect.EFFECT_TEXTURE_TICK:
case VibrationEffect.EFFECT_TICK:
case VibrationEffect.EFFECT_POP:
case VibrationEffect.EFFECT_THUD:
@@ -379,6 +380,9 @@
mFallbackEffects.put(VibrationEffect.EFFECT_TICK, tickEffect);
mFallbackEffects.put(VibrationEffect.EFFECT_HEAVY_CLICK, heavyClickEffect);
+ mFallbackEffects.put(VibrationEffect.EFFECT_TEXTURE_TICK,
+ VibrationEffect.get(VibrationEffect.EFFECT_TICK, false));
+
mScaleLevels = new SparseArray<>();
mScaleLevels.put(SCALE_VERY_LOW,
new ScaleLevel(SCALE_VERY_LOW_GAMMA, SCALE_VERY_LOW_MAX_AMPLITUDE));