【问题标题】:d-pad and joystick have the same Event-source id. want to differentiate between d-pad and joystickd-pad 和操纵杆具有相同的事件源 ID。想要区分 d-pad 和操纵杆
【发布时间】:2016-03-22 19:28:41
【问题描述】:

我试图区分操纵杆和方向键输入。 我总是得到相同的事件源(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);
}

【问题讨论】:

  • 我在另一个问题中添加了answer,希望也能回答这个问题!

标签: android joystick gamepad


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多