Плавно перемещайте изображение с помощью акселерометра в Android

Я создаю приложение для Android, похожее на рентгеновский сканер (Ссылка на Play Маркет), которая плавно перемещает изображения на экране, перемещая устройство влево, вправо вверх и вниз.

Я использую для этого акселерометр, но проблема в том, что изображение движется не плавно. Мой код ниже

int x1 = (int) sensorEvent.values[0]*(screenW/10);
int y1 = (int) sensorEvent.values[1]*(screenH/14);

а затем в Draw canvas.drawBitmap(bmp, x, y, mPaint);


person yasir shehzad    schedule 19.07.2013    source источник
comment
Датчики могут добавить немного джиттера. Чтобы получить плавные движения, вам обычно нужно выполнить какое-то преобразование Фурье для нескольких значений датчика, чтобы сгладить выходные данные. Иногда эффект достигается за счет комбинации гироскопа с акселерометром.   -  person Jay Snayder    schedule 19.07.2013


Ответы (1)


Это не то, как вы их используете. Вы должны взять текущее значение и ДОБАВИТЬ в текущую позицию вместо того, чтобы напрямую устанавливать позицию из значения. Чем больше вы наклоняете, тем большие значения вы получите и, следовательно, тем быстрее будет двигаться изображение. Затем вы также можете применить некоторую линейную интерполяцию к движению, чтобы оно выглядело более плавным.

Вот ссылка, чтобы узнать больше о lerp (линейной интерполяции) в коде: http://en.wikipedia.org/wiki/Linear_interpolation#Programming_language_support

person Alex Kremer    schedule 19.07.2013