Android : 振动器不停止振动

Android : The vibrator does not stop vibrating

我对振动器对象有一个奇怪的问题。

Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(2 * DateUtils.SECOND_IN_MILLIS);

当屏幕打开时(甚至在我的应用程序之外),它会按预期工作。 但是,如果我按一次电源按钮关闭屏幕,振动器在 2 秒后不会停止振动。它会无限期地继续振动。

请注意,此行为仅发生在我的摩托罗拉 Moto E3 上。你知道我该如何规避这个问题吗?

根据我的经验,Vibrator 在不同设备上的工作方式不同。最好的办法是 cancel() onStop() 中 Activity 的振动。

如果 Roy 的建议不起作用。尝试制作一个 AlarmManager,并将其设置为在 2 秒内关闭,并在其中调用 vibrator.cancel()

我尝试了所有方法(postdelayed、服务、新线程……),但没有成功。但我终于找到了一种方法来绕过摩托罗拉 Moto E3 上的这个错误,使用模式:

Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(new long[]{0, 2 * DateUtils.SECOND_IN_MILLIS}, -1);

希望对您有所帮助。