哇,好吧,这肯定是一个错误!
,好像它是一个静态变量,每个SensorEvent的时间戳被覆盖......
事件发生时,当我记录的时间戳的字符串,所有的值是不同的。
事件以未改变的方式存储在数组中。
数组中的每个SensorEvent现在都具有相同的时间戳,但值数组仍然不同(即它们不是同一个对象并包含不同的信息...除时间戳外)。
Google/HTC,请返回我的生活3个小时!
我会去提交一个错误报告,除非任何人可以解释这种行为。这当然没有在API中记录。
在此期间,尝试这种解决方案:
import android.hardware.Sensor;
import android.hardware.SensorEvent;
public class UnbrokenSensorEvent {
public long timestamp;
public float[] values;
public Sensor sensor;
public UnbrokenSensorEvent(SensorEvent event){
this.timestamp = event.timestamp;
this.values = event.values;
this.sensor = event.sensor;
}
}
然后做这样的事情在你的听众:
ArrayList<UnbrokenSensorEvent> results = new ArrayList<UnbrokenSensorEvent>();
public void onSensorChanged(SensorEvent event) {
results.add(new UnbrokenSensorEvent(event));
}
重构应该是很容易的,因为SensorEvent和UnbrokenSensorEvent有相同的公共领域。如果您需要使用其他SensorEvent功能,只需继续并将其放入Unbreakken版本即可。
这是hacky,但恕我直言,快速入侵总是比等待API更新更好!
我有运行HTC感觉XL同样的问题。遵循相同的参考指南。我尝试删除* NS2S并保持dT长,但差异仍然为零,所以它不是浮点问题。在IntelliJ的调试器中,我可以查看大约2秒内累积的SensorEvent数组 - 全部具有相同的event.timestamp!这是我们手机的API中的错误,还是“功能”? – Alex 2013-02-18 05:16:15