因此,我正在编写一个可检测运动的应用程序,并且需要针对各种运动进行校准。在过去的几天中,我注意到在注册SensorEventListener
之后,onSensorChanged(SensorEvent)
会抛出不完整的(因此是错误的).values[]
。这种行为使我的校准过程更加混乱,并且表示运动的力量太大。我已经验证了我下载并测试的每个加速度计日志记录应用程序都属于这种情况,因此这并不是我的代码特有的错误。我认为这可能是由于硬件故障(可能是我的moto droid 1所特有的)或我使用的自定义ROM引起的软件错误(来自Froyo 2.2.1的Simply Stunning 4.9)引起的。
例:
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或其他手机上确认或否认这种行为?您是否认为一个好的解决方案是仅丢弃前两个或三个读数,以免它们扭曲我的校准?
最佳答案
对我来说听起来很合理。也许您可以首先以最快的延迟注册您的监听器,这样您就可以很快排除一些不良读数,然后以所需的更新速率重新注册以进行校准。您可以使用两个不同的侦听器,第一个侦听器可以解决问题,然后取消注册并注册另一个(好的)侦听器。
关于android - Android-motodroid 1上的加速度计首先报告不正确的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4099706/