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"/>