Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

speed or acceleration of motion event android

Is it possible to get the speed or velocity or acceleration of touch event in android with the existing api? I have gone through MotionEvent class and none of the fields in that class seem to retrieve information that i need. Any help would be greatly appreciated

like image 921
user1253887 Avatar asked Dec 09 '22 00:12

user1253887


1 Answers

MotionEvent does not help you in this case. You can use VelocityTracker class. It gets MotionEvent instances and calculates velocity of recent touch events. You can take a look at its documentation here: http://developer.android.com/reference/android/view/VelocityTracker.html

First you have to get an instance by obtain() method:

VelocityTracker velocity = VelocityTracker.obtain();

then you can add ACTION_MOVE events to its queue:

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

then you can compute velocity and extract x_velocity and y_velocity

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

I hope it works for you.

like image 183
Ali Samz Avatar answered Dec 26 '22 22:12

Ali Samz