三星上的Android振动器

时间:2019-02-21 21:00:01

标签: android

我在Android Vibrator上遇到问题。基本上,我只有一个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的WakeLock,在某些三星设备上,当手机屏幕关闭时,振动器也会停止。

1 个答案:

答案 0 :(得分:0)

最近,我们陷入了同样的情况。

根据Android文档:

  

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

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

三星停止了Vibrator的好消息,但是它并没有禁止它从将来开始。

我们已经有了下一个解决方法:

当屏幕关闭时,当前活动将被onStop()调用。因此,我们检查是否应该在那一刻振动,如果这样做,我们可以简单地再次启动Vibrator。也许不是最好的解决方案,但它可以工作。