0

我对 Android 中的传感器读取率有点困惑。下面的代码报告了约 53 毫秒的延迟(ZTE Blade,速率传感器事件设置为 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 似乎也有点长。这可能是设备的硬件限制吗?这个数字会在不同的平台上有所不同吗?

任何建议表示赞赏。

4

1 回答 1

1

我会平均一段时间而不是多个样本。如果您采用基于数字的方法,我预计具有不同设备功能的不同设备会产生截然不同的结果。如果您想要更定期地管理采样,我可能会将测试与事件断开连接,并以您希望的任何频率轮询设备。

于 2011-10-29T21:12:46.653 回答