2012-04-14 81 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 – 2012-04-14 19:52:14

+0

我认为他不是指加速度计。 – 2012-04-14 19:59:40

+0

是的,我不是说加速度计。我的意思是手势的速度或速度 – user1253887 2012-04-14 21:03:41

回答

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

非常有帮助谢谢 – 2013-08-15 10:17:50