【问题标题】:Android: How to control onSensorChange sampling rateAndroid:如何控制 onSensorChange 采样率
【发布时间】:2011-10-29 21:01:30
【问题描述】:

我对 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 似乎也有点长。这可能是设备的硬件限制吗?这个数字会在不同平台上有所不同吗?

感谢任何建议。

【问题讨论】:

    标签: android android-sensors sampling magnetometer


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多