dispatchGenericMotionEvent(android.view. MotionEvent)
我在方法中从我的蓝牙游戏手柄控制器接收轴位置。我的方法:
@Override
public boolean dispatchGenericMotionEvent(final MotionEvent event) {
if( mPadListener==null ||
(event.getSource()&InputDeviceCompat.SOURCE_JOYSTICK)!=InputDeviceCompat.SOURCE_JOYSTICK ){
return super.dispatchGenericMotionEvent(event);
}
int historySize = event.getHistorySize();
for (int i = 0; i < historySize; i++) {
// Process the event at historical position i
Log.d("JOYSTICKMOVE",event.getHistoricalAxisValue(MotionEvent.AXIS_Y,i)+" "+event.getHistoricalAxisValue(MotionEvent.AXIS_Z,i));
}
// Process current position
Log.d("JOYSTICKMOVE",event.getAxisValue(MotionEvent.AXIS_Y)+" "+event.getAxisValue(MotionEvent.AXIS_Z));
return true;
}
问题是,当我释放所有操纵杆轴时,我的日志中没有得到最后一个轴值 (0,0)。例如,它在 (0.23,0.11) 中停止,并且仅在下一次移动事件之后才会在 logcat 中出现适当的值。更重要的是 - 即使我按下普通按钮,情况也是一样的(按钮事件被完全其他方法捕获dispatchKeyEvent(android.view.KeyEvent)
)
这是怎么回事 ?