Итак, я пишу приложение, которое обнаруживает движение и нуждается в калибровке для различных движений.За последние несколько дней я заметил, что сразу после регистрации SensorEventListener
, onSensorChanged(SensorEvent)
выбрасывает неполное (и, следовательно, ошибочное) .values[]
.Такое поведение портит мой процесс калибровки, и величина силы, которая означает движение, слишком велика.Я подтвердил, что это относится ко всем загруженным и протестированным приложениям регистрации акселерометра, поэтому это не ошибка, характерная для моего кода.Я думаю, что это может быть вызвано плохим оборудованием (возможно, специфичным для моего moto droid 1) или программной ошибкой из-за используемого мной пользовательского ПЗУ (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 показания, чтобы они не искажали мою калибровку?