diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/VibrationModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/VibrationModule.java index 909ced4fc61..b911b7b0b50 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/VibrationModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/VibrationModule.java @@ -9,6 +9,8 @@ package com.facebook.react.modules.vibration; import android.annotation.SuppressLint; import android.content.Context; +import android.os.Build; +import android.os.VibrationEffect; import android.os.Vibrator; import com.facebook.fbreact.specs.NativeVibrationSpec; import com.facebook.react.bridge.ReactApplicationContext; @@ -35,7 +37,13 @@ public class VibrationModule extends NativeVibrationSpec { int duration = (int) durationDouble; Vibrator v = (Vibrator) getReactApplicationContext().getSystemService(Context.VIBRATOR_SERVICE); - if (v != null) { + if (v == null) { + return; + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + v.vibrate(VibrationEffect.createOneShot(duration, VibrationEffect.DEFAULT_AMPLITUDE)); + } else { v.vibrate(duration); } } @@ -45,11 +53,18 @@ public class VibrationModule extends NativeVibrationSpec { int repeat = (int) repeatDouble; Vibrator v = (Vibrator) getReactApplicationContext().getSystemService(Context.VIBRATOR_SERVICE); - if (v != null) { - long[] patternLong = new long[pattern.size()]; - for (int i = 0; i < pattern.size(); i++) { - patternLong[i] = pattern.getInt(i); - } + if (v == null) { + return; + } + + long[] patternLong = new long[pattern.size()]; + for (int i = 0; i < pattern.size(); i++) { + patternLong[i] = pattern.getInt(i); + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + v.vibrate(VibrationEffect.createWaveform(patternLong, repeat)); + } else { v.vibrate(patternLong, repeat); } }