我正在开发一个涉及振动的小应用程序,每当调用vibrate()
函数时,应用程序崩溃。堆栈跟踪链接回vibrator.vibrate()行,文本“Vibrator:Failed to vibrate”。振动器。还有一些DeadObjectExceptions
和RuntimeExceptions
都链接到Android类。这只发生在某些手机上,有些则完美无缺。
hasVibrator()
返回true
,振动器对象非空,手机有振动器,所以我无法弄清楚是什么问题。也许我试图在振动器对象创建后过早振动,或者我在onCreate()
方法中过早地创建振动器对象?
以下是我使用vibrate()
方法的代码部分:
//vibrate only if exists
if (vibrating)
{
long[] pattern = {0, power, target - power};
try
{
vibrator.vibrate(pattern, 0);
}
catch (Exception e)
{
vibrating = false;
}
}
答案 0 :(得分:0)
假设您正在使用getSystemService,您可以获得该服务,如果该类不是受支持的系统服务,则为null。
现在,既然你说你在不同的设备上得到了某些例外,你可以捕获这些例外。
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if(vibrator != null)
{
try
{
long[] pattern = { 0, 200, 500 };
vibrator.vibrate(pattern, 0);
}
catch(DeadObjectExceptions e)
{
e.printStackTrace();
}
}