首页 > 解决方案 > 三星上的安卓振动器

问题描述

我对 Android 振动器有疑问。基本上,我只有一个 Singletone - 范围类以某种方式封装 android.os.Vibrator,它有两种方法

startVibrating() {
if (VERSION.SDK_INT < VERSION_CODES.O) {
        vibrator.vibrate(PATTERN, 0);
      } else {
        vibrator.vibrate(VibrationEffect.createWaveform(PATTERN, 0));
      }
} 

stopVibrating() {
 vibrator.cancel();
}

问题是在某些三星设备上,即使我有 CPU 唤醒锁,当手机屏幕关闭时,振动器也会停止。

标签: android

解决方案


最近,我们也遇到了同样的情况。

根据 Android 文档:

如果您的进程退出,您开始的任何振动都将停止。

你会期望,如果你有任何与 CPU 相关的WakeLock,它应该可以正常工作。但是,我们发现 Android 6 和 Android 7 上的三星设备在Vibrator其他一些情况下也会停止。例如,每次使用 关闭屏幕时PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,即使您明确使用了其他唤醒锁。

好消息是三星停止了它,Vibrator但它并不禁止它从未来开始。

我们最终得到了下一个解决方法:

当屏幕熄灭时,当前活动被onStop()调用。所以,我们检查我们是否应该在那一刻振动,如果我们这样做,我们就简单地重新开始Vibrator。也许,不是最好的解决方案,但它有效。


推荐阅读