即使hasVibrator()返回true,应用程序在使用Vibrator时也会崩溃

时间:2017-05-05 00:46:51

标签: java android android-vibration

我正在开发一个涉及振动的小应用程序,每当调用vibrate()函数时,应用程序崩溃。堆栈跟踪链接回vibrator.vibrate()行,文本“Vibrator:Failed to vibrate”。振动器。还有一些DeadObjectExceptionsRuntimeExceptions都链接到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;
    }
}

1 个答案:

答案 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();
    }
}