2013-07-19 3 views
1

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

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

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

, а затем в прорисовке canvas.drawBitmap(bmp, x, y, mPaint);

+0

Датчики могут добавлять совсем немного джиттера. Чтобы получить плавные движения, вам обычно нужно выполнить какое-то преобразование Фурье по нескольким значениям датчика, чтобы сгладить выход. Случайно эффект достигается сочетанием гироскопа с акселерометром. –

ответ

1

Это не то, как вы их используете. Вы должны использовать текущее значение и ADD для текущей позиции вместо того, чтобы напрямую устанавливать позицию из значения. Чем больше вы наклоняетесь - тем больше значений вы получите и, следовательно, быстрее будет отображаться изображение. Затем вы можете применить некоторую линейную интерполяцию к движению, чтобы она выглядела более плавной.

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

Смежные вопросы