0

画像の動きを滑らかにしようとしています。この質問は何度も聞かれていることは承知していますが、私がもっと興味を持っていることが 1 つありますが、それは他の質問では出てきません。ビットマップを移動するために、センサーの加速度値をそのまま使用しています。私は、この方法が私を前後-9.8に制限していることを認識しています+9.8が、これはまさに私が望むものであり、ビットマップをできるだけ動かしたいのです。ローパスフィルターについて読みましたが、理解した限りでは、ビットマップを画面全体に移動するのに役立ち、私の場合はまったく不要です。それで、私は正しいですか?ビットマップを移動するために加速度計の値をそのまま使用すると、滑らかな動きが得られませんか?

これは、加速度計から値を取得するためのコードです。その型はTYPE_ACCELEROMETER

public void onSensorChanged(SensorEvent event) {

        xAcceleration = event.values[0];
        yAcceleration = event.values[1];

}
4

1 に答える 1

1

ハイパスフィルターのことですか?実際にローパスフィルターを試しましたか?

とにかく、加速度計は確かに特定のしきい値を下回るとノイズが多くなります。したがって、生データを見ると、「滑らかな」数値ではなく「大まかな」数値が表示されることを期待する必要があります。ハイパスフィルターが役立つはずです。また、調整可能なサンプル範囲の平均を計算するだけで、まともな結果が得られました。

もう1つ試してみてください。新しい加速度計データを取得するたびに、ビットマップの位置を更新しないでください。つまり、ビットマップの位置を更新するメソッドをonSensorChangeから切り離します。onSensorChangeからのセンサーデータよりも少ない頻度でビットマップの位置を更新できるはずです...これにより、スムーズな位置変更の計算が容易になります。

ここには多くの良い提案もあります: 加速度計のデータノイズのフィルタリング

于 2012-09-03T18:27:20.413 に答える