当我触摸屏幕上的对象时,我试图让我的设备振动。我正在使用这段代码:
Vibrator v = (Vibrator) getSystemService(getApplicationContext().VIBRATOR_SERVICE);
v.vibrate(300);
在清单文件中获得许可,但我似乎没有得到任何结果。有什么建议么?另外,我的硬件支持振动。
当我触摸屏幕上的对象时,我试图让我的设备振动。我正在使用这段代码:
Vibrator v = (Vibrator) getSystemService(getApplicationContext().VIBRATOR_SERVICE);
v.vibrate(300);
在清单文件中获得许可,但我似乎没有得到任何结果。有什么建议么?另外,我的硬件支持振动。
根据这个答案,您可以执行触觉反馈(振动)而无需请求任何额外权限。看performHapticFeedback
方法。
View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
注意:我没有测试过这段代码。
请试试这个:
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"/>
当用户触摸视图时,它会振动一次(当用户在视图上滑动手指时不会继续振动!):
@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"/>
如果有人要找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"/>
为我工作kotlin ext fun
对于触觉效果,vibro 有 5 毫秒!( SHORT_HAPTIC_FEEDBACK_DURATION
)
fun Context.performHapticFeedback() {
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val vibrationEffect = VibrationEffect.createOneShot(HAPTIC_FEEDBACK_DURATION, VibrationEffect.DEFAULT_AMPLITUDE)
vibrator.vibrate(vibrationEffect)
} else {
vibrator.vibrate(TimeUnit.MILLISECONDS.toMillis(SHORT_HAPTIC_FEEDBACK_DURATION))
}
}
private const val SHORT_HAPTIC_FEEDBACK_DURATION = 5L
用法
addOnItemTouchListener(ItemTouchListener { position, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
context.performHapticFeedback()
}
})
允许
<uses-permission android:name="android.permission.VIBRATE"/>
祝你好运✌:))