Вот что я сделал. Я освещаю только два типа вибраций, которые придется делать. Более длинный один и два коротких, которые могут переводиться в CLICK и DOUBLE_CLICK:
private void vibrate(int vibrationMessageId) {
long[] doubleClickPattern = {0, 75, 75, 75};
if (Build.VERSION.SDK_INT >= 26) {
Log.d(TAG, "vibrate: SDK 26+ " + Build.VERSION.SDK_INT);
switch (vibrationMessageId) {
case Constants.VIBRATION_HEAVY_CLICK:
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE));
break;
case Constants.VIBRATION_DOUBLE_CLICK:
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createWaveform(doubleClickPattern,-1));
break;
}
} else {
Log.d(TAG, "vibrate: SDK <26 " + Build.VERSION.SDK_INT);
switch (vibrationMessageId) {
case Constants.VIBRATION_HEAVY_CLICK:
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(200);
break;
case Constants.VIBRATION_DOUBLE_CLICK:
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(doubleClickPattern,-1);
break;
}
}
}