Android 调用 vibrate() 方法后,系统软键的振动器服务强度模式保持不变

Android's Vibrator Service intensity pattern sticks for system's soft keys after calling vibrate() method

我正在使用 Android 的 VIBRATOR_SERVICE 让我的设备在有限的、非重复的事件上以自定义的非重复模式振动,如下所示:

((Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE))
                .vibrate(Constants.VIBRATION_DELETE_CHAT, 1);

这适用于所需的事件。但是,一旦设备按预期振动,只要应用程序没有停止(通过手动强制停止它或等待系统停止它),设备的软键就会以我最初指定的相同高强度模式振动我的活动。

我设置了自己的自定义一次性振动后是否需要设置系统的振动默认值,或者为什么软键会受到这行代码的影响?

谢谢,

调用 Vibrator.vibrate(long[] pattern, int repeat) 不应影响系统振动默认值。

检查您传递的 int repeat 参数的值是否正确。此参数是您提供的振动模式的索引。当您将 1 作为此参数传递时,您将需要手动调用 Vibrator.cancel() 以停止重复。把这个参数改成-1,防止重复。

此外,如果此索引超出振动模式数组大小的范围,则可能会导致问题。