You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android游戏开发中游戏控制器按键/运动事件无响应问题求助

解决Android游戏控制器事件无响应问题

排查步骤与解决方案

1. 补全蓝牙控制器权限

从Android 12(API 31)开始,蓝牙连接的游戏控制器需要显式声明权限,否则系统会拦截输入事件。在AndroidManifest.xml中添加:

<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

即使targetSdk为34,也必须手动声明该权限,并在运行时请求用户授权。

2. 确保Activity获取焦点

Activity或其根View未获取焦点时,输入事件不会触发对应回调。在onResume中强制请求焦点:

@Override
protected void onResume() {
    super.onResume();
    getWindow().getDecorView().requestFocus();
}

同时检查布局中是否有其他View设置了focusable="true"并抢占了焦点。

3. 放宽输入事件来源判断

部分控制器的按键事件可能通过SOURCE_DPAD而非SOURCE_GAMEPAD触发,修改事件检测逻辑:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int source = event.getSource();
    boolean isControllerInput = (source & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD
            || (source & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK
            || (source & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD;
            
    if (isControllerInput) {
        Log.d("Controller", "Key triggered: " + event.getKeyCode());
        return true; // 标记事件已处理,避免传递给父类
    }
    return super.dispatchKeyEvent(event);
}

4. 检查系统级输入拦截

  • 关闭设备上的无障碍服务、悬浮球等可能拦截输入的系统应用
  • 切换到原生Android系统(若当前设备为定制ROM)测试,排除系统定制导致的事件拦截

5. 适配API 33+摇杆事件逻辑

Android 13调整了摇杆事件的分发规则,需在dispatchGenericMotionEvent中明确处理ACTION_MOVE动作:

@Override
public boolean dispatchGenericMotionEvent(MotionEvent event) {
    if ((event.getSource() & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK) {
        if (event.getAction() == MotionEvent.ACTION_MOVE) {
            float xAxis = event.getAxisValue(MotionEvent.AXIS_X);
            float yAxis = event.getAxisValue(MotionEvent.AXIS_Y);
            Log.d("Controller", "Joystick: X=" + xAxis + ", Y=" + yAxis);
            return true;
        }
    }
    return super.dispatchGenericMotionEvent(event);
}

6. 验证官方示例的运行条件

运行官方ControllerSample时:

  • 开启开发者选项中的显示触摸操作,确认控制器输入是否被系统识别
  • 将示例项目的targetSdk调整为34,重新编译后测试

内容的提问来源于stack exchange,提问作者Ольга Акиньшина

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:23:16