2012-04-14 69 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