diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/Vibrator.java | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index 8f5086021530..78f1cb12ded6 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -546,18 +546,22 @@ public abstract class Vibrator { @VibrationEffectSupport public final int areAllEffectsSupported( @NonNull @VibrationEffect.EffectType int... effectIds) { - int support = VIBRATION_EFFECT_SUPPORT_YES; - for (int supported : areEffectsSupported(effectIds)) { - if (supported == VIBRATION_EFFECT_SUPPORT_NO) { - return VIBRATION_EFFECT_SUPPORT_NO; - } else if (supported == VIBRATION_EFFECT_SUPPORT_UNKNOWN) { - support = VIBRATION_EFFECT_SUPPORT_UNKNOWN; + VibratorInfo info = getInfo(); + int allSupported = VIBRATION_EFFECT_SUPPORT_YES; + for (int effectId : effectIds) { + switch (info.isEffectSupported(effectId)) { + case VIBRATION_EFFECT_SUPPORT_NO: + return VIBRATION_EFFECT_SUPPORT_NO; + case VIBRATION_EFFECT_SUPPORT_YES: + continue; + default: // VIBRATION_EFFECT_SUPPORT_UNKNOWN + allSupported = VIBRATION_EFFECT_SUPPORT_UNKNOWN; + break; } } - return support; + return allSupported; } - /** * Query whether the vibrator supports the given primitives. * @@ -598,8 +602,9 @@ public abstract class Vibrator { */ public final boolean areAllPrimitivesSupported( @NonNull @VibrationEffect.Composition.PrimitiveType int... primitiveIds) { - for (boolean supported : arePrimitivesSupported(primitiveIds)) { - if (!supported) { + VibratorInfo info = getInfo(); + for (int primitiveId : primitiveIds) { + if (!info.isPrimitiveSupported(primitiveId)) { return false; } } |
