我试图区分操纵杆和d-pad输入。 我总是得到相同的事件源(16777232)。如果我按下d-pad或转动操纵杆无关紧要。
我正在使用ipega游戏控制器
我的问题是:
第一:
当我向左转动左侧操纵杆时:
1. dispatchGenericMotionEvent(MotionEvent motionEvent)
被触发。和
a= 16777232(SOURCE_JOYSTICK)
2.它将转发到dispatchKeyEvent(KeyEvent event)
第二:
当我向右转动右侧操纵杆时:
1. ispatchGenericMotionEvent(MotionEvent motionEvent)
被触发。和
a= 16777232(SOURCE_JOYSTICK)
2.它向前转到dispatchKeyEvent(KeyEvent event)
第三:
当我按下左/右/上/下d-pad按钮时:
1。ispatchGenericMotionEvent(MotionEvent motionEvent)
被触发。和
a= 16777232(SOURCE_JOYSTICK)
2.它将转发到dispatchKeyEvent(KeyEvent event)
@Override
public boolean dispatchGenericMotionEvent(MotionEvent motionEvent)
{
int a=motionEvent.getSource();
return super.dispatchGenericMotionEvent(motionEvent);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int a=motionEvent.getSource();
return super.dispatchKeyEvent(event);
}
答案 0 :(得分:0)
我不确定你遇到过同样的问题(我只在特定的手机上试过DS4)
我遇到的是使用dispatchKeyEvent方法,控制器正在混合(给我相同的响应)左摇杆和方向键,如果我没记错的话,混合左右摇杆命令。 / p>
如果每次移动操纵杆或按下按钮时都会记录,您会看到某些操作同时调用GenericMotionEvent和dispatchKeyEvent,但是会有不同的事件。
我要做的是将两个棒的动作与onGenericMotionEvent方法分开(这也会给你强度从0.0到1.0),dispatchKeyEvent方法将继续触发KeyEvents。