android - 三星上的安卓振动器
问题描述
我对 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 文档:
如果您的进程退出,您开始的任何振动都将停止。
你会期望,如果你有任何与 CPU 相关的WakeLock
,它应该可以正常工作。但是,我们发现 Android 6 和 Android 7 上的三星设备在Vibrator
其他一些情况下也会停止。例如,每次使用 关闭屏幕时PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
,即使您明确使用了其他唤醒锁。
好消息是三星停止了它,Vibrator
但它并不禁止它从未来开始。
我们最终得到了下一个解决方法:
当屏幕熄灭时,当前活动被onStop()
调用。所以,我们检查我们是否应该在那一刻振动,如果我们这样做,我们就简单地重新开始Vibrator
。也许,不是最好的解决方案,但它有效。
推荐阅读
- json - jq - 计算匹配选择的项目数
- angular - 无法读取未定义的属性“无效”
- c# - 类型“B”没有带有类型参数的构造函数?
- redis - Redis 6 中的多线程 I/O 对哪些类型的工作负载有影响?
- rust - Rust 类型 + 生命周期的总和是多少?
- java - 解释问题的行为以及为什么用例被拒绝?
- html - Jquery使用多部分formposts CORS错误调用外部API
- google-cloud-platform - 在 Google Cloud Compute 上永久更改主机名 - WHM
- lua - 构建脚本未运行
- python - 在 raspbian/linux 上打印错误 Pyqt Qwebkit