0

我正在努力使我的图像移动更顺畅。我知道这个问题已经被问过很多次了,但是有一件事我更感兴趣,并且在其他问题中没有出现。我直接使用传感器加速度值来移动位图。我知道这种方法将我限制在左右之间-9.8+9.8但这正是我想要的,我希望我的位图只移动一样多。我读到了低通滤波器,但据我所知,它对于在屏幕上移动位图很有用,在我的情况下它是完全没有必要的。那我说得对吗?如果我直接使用加速度计值移动位图,我不应该获得平滑的移动吗?

这是从我的加速度计获取值的代码。它的类型是TYPE_ACCELEROMETER

public void onSensorChanged(SensorEvent event) {

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

}
4

1 回答 1

1

你说的是高通滤波器吗?你真的尝试过低通滤波器吗?

无论如何,加速度计在低于某个阈值时肯定是有噪声的。所以是的,在查看原始数据时,您应该期望看到“粗略”而不是“平滑”的数字。高通滤波器应该会有所帮助。我还看到了在可调节样本范围内计算平均值的不错结果。

另一件要尝试的事情:不要在每次获得新的加速度计数据时更新位图的位置。也就是说,将更新位图位置的方法与 onSensorChange 分离。您应该能够比来自 onSensorChange 的传感器数据更频繁地更新位图的位置......这应该更容易计算平滑的位置变化。

这里也有很多好的建议: Filtering accelerometer data noise

于 2012-09-03T18:27:20.413 回答