Android Вибрация при прикосновении?

Я пытаюсь заставить свое устройство вибрировать, когда касаюсь объекта на экране. Я использую этот код:

 Vibrator v = (Vibrator) getSystemService(getApplicationContext().VIBRATOR_SERVICE); 
 v.vibrate(300);    

с разрешением в файле манифеста, но я не получаю никаких результатов.  Какие-либо предложения? Кроме того, мое оборудование поддерживает вибрацию.

Ответ 1

попробуйте следующее:

Button b = (Button) findViewById(R.id.button1);
    b.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            Vibrator vb = (Vibrator)   getSystemService(Context.VIBRATOR_SERVICE);
            vb.vibrate(100);
            return false;
        }
    });

и добавьте это разрешение в manifest.xml

 <uses-permission android:name="android.permission.VIBRATE"/>

Ответ 2

Согласно этому ответу, вы можете осуществлять тактильную обратную связь (вибрировать), не запрашивая никаких дополнительных разрешений. Посмотрите на метод performHapticFeedback.

View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);

Примечание: я не проверял этот код.

Ответ 3

Это будет вибрировать один раз, когда пользователь коснется вида (не будет вибрировать, когда пользователь все еще двигает пальцем!):

@Override
public boolean onTouch(View view, MotionEvent event) {

    if(event.getAction() == MotionEvent.ACTION_DOWN) {
        Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        v.vibrate(VIBRATE_DURATION_MS);
    }
    return true;
}

И как сказал Рамеш, разрешите в манифесте разрешение:

<uses-permission android:name="android.permission.VIBRATE"/>

Ответ 4

Если кто-то ищет kotlin,

val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
vibrator.vibrator(durationInMilliSeconds)

и для Android-O и новее,

val vibrationEffect = VibrationEffect.createOneShot(vibrationDuration, vibrationAmplitude)
vibrator.vibrator(vibrationEffect) 

пока отменить вибрацию,

vibrate.cancel()

вам также нужно добавить разрешение в ваш AndroidManifest.xml

<uses-permission android:name="android.permission.VIBRATE"/>