0

我试图区分操纵杆和方向键输入。我总是得到相同的事件源(16777232)。不管我是按下方向键还是转动操纵杆。

我正在使用 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);
}
4

1 回答 1

0

我不确定你是否遇到了我曾经遇到的同样问题(我只在特定手机上尝试过 DS4)

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

如果您在每次移动摇杆或按下按钮时进行记录,您会看到一些操作同时调用 onGenericMotionEvent 和 dispatchKeyEvent,但事件不同。

我必须做的是用 onGenericMotionEvent 方法(这也会给你从 0.0 到 1.0 的强度)分离两个棒的动作,并且 dispatchKeyEvent 方法将继续触发 KeyEvents。

于 2016-03-22T19:45:44.107 回答