d-pad和游戏杆具有相同的事件源ID。想要区分d-pad和游戏杆

时间:2016-03-22 19:28:42

标签: android joystick gamepad

我试图区分操纵杆和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);
}

1 个答案:

答案 0 :(得分:0)

我不确定你遇到过同样的问题(我只在特定的手机上试过DS4)

我遇到的是使用dispatchKeyEvent方法,控制器正在混合(给我相同的响应)左摇杆和方向键,如果我没记错的话,混合左右摇杆命令。 / p>

如果每次移动操纵杆或按下按钮时都会记录,您会看到某些操作同时调用GenericMotionEvent和dispatchKeyEvent,但是会有不同的事件。

我要做的是将两个棒的动作与onGenericMotionEvent方法分开(这也会给你强度从0.0到1.0),dispatchKeyEvent方法将继续触发KeyEvents。