当我快速向左或向右倾斜手机以在我的应用中移动播放器时,播放器开始摆动一小段时间。如何移除此效果并使其平滑,例如在涂鸦跳?我使用原始加速度计传感器事件值添加到玩家坐标。有没有算法,或者我应该以不同的方式使用传感器?
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != SENSOR)
return;
if(this.isRunning()) {
spieler.setMoveSpeed(-event.values[0]);
}
}
答案 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