所以我正在编写一个检测运动的应用程序,需要针对各种运动进行校准。在过去的几天里,我注意到在 aSensorEventListener
注册之后,onSensorChanged(SensorEvent)
会抛出不完整的(因此是错误的).values[]
。这种行为搞砸了我的校准过程,并且表示运动的力量太大了。我已经验证我下载和测试的每个加速度计记录应用程序都是这种情况,所以它不是我的代码特有的错误。我认为这可能是由坏硬件(可能特定于我的 moto droid 1)或我正在使用的自定义 ROM 的软件错误引起的(Simply Stunning 4.9,来自 Froyo 2.2.1 源。)
例子:
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SENSOR_DELAY);
....
onSensorChanged(SensorEvent event){
// event.values[0] = 0.0
// event.values[1] = -0.47
// event.values[2] = 0.0
}
....
onSensorChanged(SensorEvent event){
// event.values[0] = 0.08
// event.values[1] = -0.47
// event.values[2] = 0.0
}
....
onSensorChanged(SensorEvent event){
// event.values[0] = 0.08
// event.values[1] = -0.47
// event.values[2] = 10.1
}
如您所见,通常需要读取 2 个读数才能访问所有正确值。
任何人都可以在 moto droid 1 或其他手机上确认或否认这种行为吗?您认为一个好的解决方案是只删除前 2 或 3 个读数,以免它们扭曲我的校准吗?