2012-09-03 22 views
0

我想讓我的圖像運動更平滑。我知道這個問題已被多次提出,但有一件事我更感興趣,而且沒有提出其他問題。我正在使用傳感器加速度值直接移動位圖。我知道這種方法將我限制在-9.8+9.8之間,但這正是我想要的,我希望我的位圖移動的數量也只有這麼多。我讀過低通濾波器,但據我瞭解,這對於在整個屏幕上移動位圖很有用,在我的情況下,這是完全沒有必要的。那我是對的嗎?如果我直接使用加速度計值來移動位圖,是否應該平滑移動?平滑的圖像運動加速度計

這裏是從我的加速度計獲取值的代碼。其類型爲TYPE_ACCELEROMETER

public void onSensorChanged(SensorEvent event) { 

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

} 

回答

1

您是不是指高通濾波器?你真的嘗試過低通濾波器嗎?

無論如何,加速度計絕對低於一定的閾值嘈雜。所以是的,在查看原始數據時,您應該期望看到「粗糙」而不是「平滑」的數字。高通濾波器應該幫助。我也看到體面的結果只是計算可調範圍內的平均值。

另一件嘗試:不要每次獲取新的加速度計數據時更新位圖的位置。也就是說,解耦從onSensorChange更新位圖位置的方法。您應該能夠比來自onSensorChange的傳感器數據更頻繁地更新您的位圖位置,並且應該能夠更輕鬆地計算平滑的位置更改。

還有大量的在這裏很好的建議: Filtering accelerometer data noise

+0

但難道不更新我的位圖位置不經常做,它只是慢?因爲我希望自己的形象儘可能快地移動並儘可能平滑。 ' –

+0

'但是不會更新我的位圖位置使其變慢?' - 不一定,它只需要經常更新以使其*看起來很平滑。無論哪種方式,將位置更新耦合到來自onSensorChange的原始數據肯定會導致「嘈雜」的運動。 – newbyca

+0

對不起,我在這個問題上有一些非常舊的示例代碼(來自甜甜圈!)...目前找不到它。當然有人會發布一些。 – newbyca