Android Акселерометр покачивается
Когда я быстро наклоняю свой мобильный телефон влево или вправо, чтобы переместить проигрыватель в моем приложении, проигрыватель на короткое время начинает покачиваться. Как я могу удалить этот эффект и сделать его таким же плавным, как, например, в Doodle Jump? Я использую необработанные значения событий датчика акселерометра для добавления к координатам игрока. Есть ли какой-либо алгоритм или я должен просто использовать датчик по-другому?
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != SENSOR)
return;
if(this.isRunning()) {
spieler.setMoveSpeed(-event.values[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