3.6.0版本apk包BUG,switch、ps手柄按键无安卓回调

  1. 可以看下AppActivity.java是如何处理 onKeyUp, onKeyDown?
  2. 若果之前有些按键响应不到,参考上个修复pr后,有些按键有响应(或在cookGameActivityKeyEvent中断点看下是否有对应的按键消息),那
    可以参考 https://github.com/cocos/cocos-engine/pull/12744中 INPUT_KEY_ACTIONS 配置 编码和引擎的对应关系,如:
    {AKEYCODE_BUTTON_Y, static_cast(KeyCode::DPAD_UP)},
    {AKEYCODE_BUTTON_B, static_cast(KeyCode::DPAD_LEFT)},
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // 获取该设备的id
        int deviceId = event.getDeviceId();
        JSONObject jsonObject = this.getDeviceJson(deviceId);
        if(jsonObject != null){
            try {
                jsonObject.put("inputType","KEY_DOWN");
                jsonObject.put("code",event.getKeyCode());
            } catch (JSONException e) {
                e.printStackTrace();
            }
            JsbBridge.sendToScript("ANDROID_INPUT", jsonObject.toString());
        }
        return super.onKeyDown(keyCode, event);
    }

直接重写方法,输出event.getKeyCode()的。3.5.1同样代码,编码输出正常,3.6.0按上表,大部分按键就无keydown调用了。

工程中使用的targetApi是否也不一样,分别是多少

另外,可以看下AndroidPlatform.cpp
cookGameControllerEvent
看是否有其他按键走这里,这个是处理手柄相关。
可以在 PADDLEBOAT_ACTIONS 添加其他事件,如:
{PADDLEBOAT_BUTTON_L1, static_cast(KeyCode::DPAD_UP)},

按键 NS 3.5.2编码 NS 3.6.0编码 PS 3.5.2编码 ps 3.6.0编码
19 19
20 20
21 21
22 22
右方按键上 100/62 100 99/67 99
右方按键下 96/23 96 97/4 97
右方按键左 99/67 99 96/23 96
右方按键右 97/4 97 返回到某个菜单 返回到某个菜单
左摇杆上 19/dispatchGeneric dispatchGeneric 19/dispatchGeneric dispatchGeneric
左摇杆下 20/dispatchGeneric dispatchGeneric 20/dispatchGeneric dispatchGeneric
左摇杆左 21/dispatchGeneric dispatchGeneric 21/dispatchGeneric dispatchGeneric
左摇杆右 22/dispatchGeneric dispatchGeneric 22/dispatchGeneric dispatchGeneric
右摇杆上 dispatchGeneric dispatchGeneric dispatchGeneric dispatchGeneric
右摇杆下 dispatchGeneric dispatchGeneric dispatchGeneric dispatchGeneric
右摇杆左 dispatchGeneric dispatchGeneric dispatchGeneric dispatchGeneric
右摇杆右 dispatchGeneric dispatchGeneric dispatchGeneric dispatchGeneric
- 109/82 109
+ 108/23 108
L 102 102 100/62 100
ZL 104 104 102 102
R 103 103 101/23 101
ZR 105 105 103 103

重新测试了下。3.6.0就上下左右无keydown、keyup回调,其它有些是改了编码。摇杆keydown3.6.0没了,但可用dispatchGenericMotionEvent来监听。
按git修改c++文件,keydown还是无调用。
targetApi都是用的android-28。
稍后我看看AndroidPlatform有没走。

请问测试结果如何?合并 pr 后能解决问题么?

还是未解决,麻烦再帮忙看看。
现在情况是手柄所有按钮cookGameActivityKeyEvent无调用,cookGameControllerEvent有调用。cookGameControllerEvent内打印输出controllerData.buttonsDown,右边按键,肩键输出32、64、128等不同数值。
左边方向键,只输出0。

还是未解决,麻烦看看。

好的,这个问题已经提交 issues 给相关引擎工程师在处理了,后续修复进展可以查看 issues:https://github.com/cocos/cocos-engine/issues/12820

我们这边没有你的手柄,可以参考下GameController.cpp
processKeyEventInternal 看下对应的code是否有处理,没有的话添加下

GameController.cpp内processKeyEventInternal 测试,左边按键方向键无调用此方法,无输出。
其他按键有调用输出。
这边还有啥零时的解决方法么?

你好,参考以下两个pr, 合并完成后,我这边用设备测试,onKeyDown里面几个方向键都有响应到了。麻烦验证下,有结论的话给下反馈谢谢。


左方向键还是无安卓onkey的调用。
有个疑问,左边方向键按上下左右为什么会有和摇杆一样的dispatchGenericMotionEvent的调用,其它按钮没有?
按钮回调映射错了?

请参考 #20#24的回复,然后修改下你的targetApi, 在local.properties, 设置成已经3.5的,然后在验证下,其他方面和3.5是完全一样了。

手柄按键监听正常了嘛?我这边按键还是没反应。

修改后,手柄按键还是没反应,只有上下左右键有输出,摇杆与左侧按键都没反应。使用的版本为3.6.2。

能帮忙看看嘛,目前就等按键调通,产品就能上线了~~

按照此方法还是无法解决。

麻烦帮忙看看 :joy:

麻烦有空看下,按照这个issues 还未解决。