哇,好的,这肯定是一个错误!
每个 SensorEvent 的时间戳都被覆盖,就好像它是一个静态变量一样...
当我记录事件发生时的时间戳字符串时,所有值都不同。
事件未更改地存储在数组中。
数组中的每个 SensorEvent 现在都具有相同的时间戳,但值数组仍然不同(即,它们不是同一个对象并且包含不同的信息……时间戳除外)。
谷歌/HTC,请归还我生命中的三个小时!
除非有人能解释这种行为,否则我会提交错误报告。它当然没有记录在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 功能,只需将其放入 Unbroken 版本即可。
这很 hacky,但恕我直言,快速 hack 总是比等待 API 更新更好!