从传感器只获得1个事件

时间:2012-10-12 17:05:16

标签: android sensor android-sensors

我试图从方向传感器中只获得一个事件。

我的代码是:

@Override
public void onSensorChanged(SensorEvent event) {
Log(event);
unregisterSensor(...);
}

然后我每隔1000毫秒在一个主题中执行:

registerSensor();
Thread.sleep(2000);

问题是,如果我在方法结束后取消注册传感器(就像我已经完成)那么下次(当我重新注册传感器时)它将记录之前捕获的相同值事件(移动时)电话)。如果我给onSensorChanged能够运行两次(使用计数器),那么它会检测到正确的值并将该值记录两次。

该方法只调用一次有什么问题?

2 个答案:

答案 0 :(得分:1)

根据您的代码,在onSensorChanged()中,您记录的是myevent,而不是您获得的event

此外,为什么不告诉LocationManager每1或2秒只发送一次新事件,而不是注册和取消注册所有麻烦?您可以使用minTime方法的LocationManager#requestLocationUpdates()参数执行此操作。

答案 1 :(得分:0)

我不知道传感器对事件的追踪,但我也不会感到惊讶,因为我在Locationlistener中看到了类似网络提供商的行为。

话虽如此,我建议您让onSensorChanged()被调用几次,丢弃第一个(缓存)和平均(或使用低通滤波器)以下的。您将获得更好的准确性,并且更多的偶数将不会结束您的电池: - )

祝你好运。