2012-04-14 4 views
3

Возможно ли получить скорость, скорость или ускорение сенсорного события в android с помощью существующего api? Я прошел через класс MotionEvent, и ни одно из полей этого класса, похоже, не извлекает информацию, которая мне нужна. Любая помощь была бы принята с благодарностьюскорость или ускорение события движения android

+0

MotionEvents не отслеживают акселерометр события: посмотреть здесь: http://developer.android.com/reference/android/view/MotionEvent.html Вы должны получить экземпляр SensorManager для акселерометра событий Там отличный пример здесь: http://www.techrepublic.com/blog/app-builder/a-quick-tutorial-on-coding-androids-accelerometer/472 –

+0

Я думаю, что он не означает акселерометр. –

+0

Да, я не имею в виду акселерометр. Я имел в виду скорость или скорость жестов – user1253887

ответ

0

Вам нужно вычислить скорость вручную между двумя событиями, используя System.nanoTime. Тот же способ для ускорения (но вместо этого используется скорость вместо координат).

14

В данном случае MotionEvent не поможет. Вы можете использовать класс VelocityTracker. Он получает экземпляры MotionEvent и вычисляет скорость последних событий касания. Вы можете посмотреть на его документации здесь: http://developer.android.com/reference/android/view/VelocityTracker.html

Сначала вы должны получить экземпляр по получаем() метод:

VelocityTracker velocity = VelocityTracker.obtain(); 

, то вы можете добавить ACTION_MOVE события своей очереди:

if(event.getAction() == MotionEvent.ACTION_MOVE) 
    { 
     velocity.addMovement(event); 
    } 

, то вы можете рассчитать скорость и экстракт x_velocity и y_velocity

velocity.computeCurrentVelocity(1000); 
float x_velocity = velocity.getXVelocity(); 
float y_velocity = velocity.getYVelocity(); 

Надеюсь, это сработает для вас.

+0

очень полезно спасибо –

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