Android加速度计摆动

时间:2014-07-27 13:19:07

标签: android accelerometer sensor

当我快速向左或向右倾斜手机以在我的应用中移动播放器时,播放器开始摆动一小段时间。如何移除此效果并使其平滑,例如在涂鸦跳?我使用原始加速度计传感器事件值添加到玩家坐标。有没有算法,或者我应该以不同的方式使用传感器?

public void onSensorChanged(SensorEvent event) {
            if (event.sensor.getType() != SENSOR)
                return;
            if(this.isRunning()) {
                spieler.setMoveSpeed(-event.values[0]);
            }
}

1 个答案:

答案 0 :(得分:1)

您需要使用低通滤波器,它专门针对您所面临的问题而设计。它将平滑加速度计值

示例代码:

            float rawX = event.values[0];
            float rawY = event.values[1];
            float rawZ = event.values[2];

            // Apply low-pass filter
            mGravity[0] = lowPass(rawX, mGravity[0]);
            mGravity[1] = lowPass(rawY, mGravity[1]);
            mGravity[2] = lowPass(rawZ, mGravity[2]);

有关低通滤波器检出的更多信息 http://developer.android.com/reference/android/hardware/SensorEvent.html