我对Android中的传感器读取率感到有些困惑。下面的代码报告延迟~53 ms(ZTE刀片,速率传感器事件设置为SENSOR_DELAY_FASTEST)。
public void onSensorChanged(SensorEvent event) {
synchronized (this) {
switch (event.sensor.getType()) {
case Sensor.TYPE_MAGNETIC_FIELD:
TimeNew = event.timestamp;
delay = (long)((TimeNew - TimeOld)/1000000);
TimeOld = TimeNew;
Log.d("Test", delay + " ms");
break;
}
}
}
日志:
DEBUG/Test(23024): 52 ms
DEBUG/Test(23024): 53 ms
DEBUG/Test(23024): 54 ms
DEBUG/Test(23024): 56 ms
DEBUG/Test(23024): 52 ms
DEBUG/Test(23024): 52 ms
DEBUG/Test(23024): 55 ms
DEBUG/Test(23024): 52 ms
如果我们想平均说出100个样本,然后保存数据,那么每100个样本之间的时间差异很大。这可能是因为传感器值在常规时间段内没有变化。
但我错过了什么吗?有没有办法获得(更多)常规测量(例如100毫秒)?或者我应该在特定的时间段内进行平均而不是没有样品?
50ms也似乎有点长。这可能是设备的硬件限制吗?这个数字在不同平台上会有所不同吗?
感谢任何建议。
答案 0 :(得分:1)
我会平均一段时间而不是一些样本。如果你采用基于数字的方法,我会期望具有不同设备功能的不同设备会产生截然不同的结果。如果您想更频繁地管理采样,我可能会将测试与事件断开连接,只需按照您希望的频率轮询设备。