package juloo.keyboard2; import android.content.Context; import android.os.Build.VERSION; import android.os.Vibrator; import android.view.HapticFeedbackConstants; import android.view.View; public final class VibratorCompat { public static void vibrate(View v, VibrationBehavior b) { switch (b) { case DISABLED: break; case SYSTEM: if (VERSION.SDK_INT >= 8) v.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); break; case STRONG: vibrator_vibrate(v, 90); break; case MEDIUM: vibrator_vibrate(v, 45); break; case LIGHT: vibrator_vibrate(v, 20); break; } } /** Use the older [Vibrator] when the newer API is not available or the user wants more control. */ static void vibrator_vibrate(View v, int duration) { try { get_vibrator(v).vibrate(duration); } catch (Exception e) {} } static Vibrator vibrator_service = null; static Vibrator get_vibrator(View v) { if (vibrator_service == null) { vibrator_service = (Vibrator)v.getContext().getSystemService(Context.VIBRATOR_SERVICE); } return vibrator_service; } public static enum VibrationBehavior { DISABLED, SYSTEM, STRONG, MEDIUM, LIGHT; VibrationBehavior() {} /** Defaults [SYSTEM] for unrecognized strings. */ public static VibrationBehavior of_string(String s) { switch (s) { case "disabled": return DISABLED; case "system": return SYSTEM; case "strong": return STRONG; case "medium": return MEDIUM; case "light": return LIGHT; default: return SYSTEM; } } } }