我正在创建一个应用程序,弹出一个警报框,必须振动,直到用户点击确定或取消
当我打开警报框但我点击确定或取消应用程序崩溃时,我的应用程序振动良好
这是用于创建带振动的警报框的编码
Vibrator v;
button = (Button) findViewById(R.id.buttonAlert);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
vibration();
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
alertDialogBuilder.setTitle("Your Title");
alertDialogBuilder.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
MainActivity.this.finish();
v.cancel();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
v.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
这是一种振动方法
public void vibration()
{
Vibrator v = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
long[] pattern = { 0, 3000, 3000 };
v.vibrate(pattern, 0);
// v.vibrate(5000);
}
当我使用Vibrator.cancel()时,我收到错误;或v.cancel();任何人都可以帮助我
答案 0 :(得分:0)
尝试使用vibrate(3000);
,相当于让设备振动3秒,试图取消已启动的服务。
答案 1 :(得分:0)
将警告标志从默认设置为
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL
这样,通知不会引起振动。
如果你想让它振动,你必须在清单文件中给予权限 确保应用程序在清单中寻求振动权限。应用程序崩溃的原因是您的应用程序无权振动手机。
这是代码
<uses-permission android:name="android.permission.VIBRATE" />
编辑:
我认为你需要的是不同的东西。启动后需要一种方法来停止振动。
振动服务在不同的环境中运行,因此您可能无法直接与其通信。有几种方法可以做到这一点,但我建议另一种简单的方法。
不要连续运行振动,而是尝试运行一小段时间,并在对话框中放置一个计时器,以便在一段时间后振动。
这样,您就不必停止振动。一旦对话框被解除,计时器将停止发射并且振动将停止。您无需明确关闭振动。
答案 2 :(得分:0)
尝试在退出对话框之前取消振动器。有关详细信息,请参阅Vibrator class 。
答案 3 :(得分:0)
尝试如下......
Vibrator v = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
long[] pattern = {0,1000,1000};
v.vibrate(pattern, -1);
答案 4 :(得分:0)
在你的代码中你有v.cancel();
但是我可以看到这个变量没有初始化,你在函数vibration()
内使用另一个变量尝试取消振动的初始化变量。
使用此功能
public Vibrator vibration() {
Vibrator v = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = { 0, 3000, 3000 };
v.vibrate(pattern, 0);
// v.vibrate(5000);
return v;
}
然后像那样开始振动
final Vibrator v = vibration();
P.S。我知道这是一个老问题,但也许有人想要答案。