作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Android Vibrator 有疑问。基本上,我只有一个 Singleton - 作用域类以某种方式封装了 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 文档:
If your process exits, any vibration you started will stop.
并且您会希望,如果您有任何与 CPU 相关的 WakeLock
,它应该可以正常工作。但是,我们发现 Android 6 和 Android 7 上的三星设备在其他一些情况下也会停止 Vibrator
。例如,每次使用 PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
关闭屏幕时,即使您显式采用其他一些唤醒锁也是如此。
三星停止 Vibrator
的好消息,但并不禁止它在未来启动。
我们最终采用了下一个解决方法:
当屏幕关闭时,当前 Activity 得到 onStop()
调用。因此,我们检查我们是否应该在那一刻振动,如果我们这样做,我们简单地再次启动 Vibrator
。也许不是最好的解决方案,但它确实有效。
关于三星安卓振动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54816140/
我想让手机长时间振动(例如 2 分钟),但振动时间非常短。我正在使用这段代码 Vibrator mVibrate = (Vibrator) getSystemService(Context.VIBRA
我是一名优秀的程序员,十分优秀!