2

だから私は動きを検出するアプリを書いています、そしてそれは様々な動きに合わせて調整する必要があります。過去数日間、aSensorEventListenerが登録された直後に、onSensorChanged(SensorEvent)不完全な(したがって誤った)がスローされることに気づきました.values[]。この動作は私のキャリブレーションプロセスを台無しにし、動きを示す力の量が高すぎます。これは、ダウンロードしてテストしたすべての加速度計ロギングアプリに当てはまることを確認したので、コードに固有のエラーではありません。これは、ハードウェアの不良(おそらく私のモトドロイド1に固有)、または使用しているカスタムROM(Froyo2.2.1ソースのSimplyStunning 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回の読み取りが必要になることがよくあります。

誰かがmotodroid1または他の電話でこの動作を確認または拒否できますか?最初の2つまたは3つの読み取り値を削除して、キャリブレーションが歪まないようにするのが良い解決策だと思いますか?

4

1 に答える 1

2

私には合理的に聞こえます。おそらく、最初に FASTEST 遅延でリスナーを登録して、これらのいくつかの悪い読み取り値をすばやく取得してから、キャリブレーションに必要な更新レートで再登録することができます。2 つの異なるリスナーを使用できます。最初のリスナーは邪魔にならないようにし、それから自分自身を登録解除し、もう 1 つの (良い) リスナーを登録します。

于 2010-11-05T02:06:46.290 に答える