我正在编写一个 Android 日志记录应用程序,该应用程序作为后台服务运行并记录传感器数据。 这是我开始记录重力传感器的代码示例:
public void StartLogging(int intervalInMilliseconds) {
mySensorManager.registerListener(this, myGravitySensor, intervalInMilliseconds * 1000); //millisec * 1000 = microsec
}
但是,我有一个问题:我设置的采样率完全被忽略,而实际的采样率要快得多。 例如:即使我设置了 10000000 微秒(又名:10000 毫秒,或 10 秒)的非常慢的采样率,我实际上每秒收到大约十几次更新,这比我请求的速度快了一百倍以上! p>
我在文档中读到,该间隔并不意味着严格精确,但这里我们谈论的是至少两个数量级的差异,这是荒谬的!
我知道我可以只比较时间戳,并且只记录每 100 个事件,但问题是我正在尝试最大限度地减少功耗,并且我想每 10 秒唤醒一次 CPU 会花费相当多的时间。对电池的影响与每秒唤醒电池十次不同。
我还知道我可以传递第四个参数,该参数设置传感器事件在传递之前可以在队列中停留的时间,但这似乎也没有任何明显的效果。
我哪里出错了?
最佳答案
它适用于某些手机,但可能不适用于其他手机,实际上这取决于手机使用的传感器和其他因素。
您不应依赖该值,而应根据您所需的费率过滤不需要的值。
干杯!!!
关于java - 传感器采样率总是太高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30169759/