- 可以看下AppActivity.java是如何处理 onKeyUp, onKeyDown?
- 若果之前有些按键响应不到,参考上个修复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。
能帮忙看看嘛,目前就等按键调通,产品就能上线了~~
按照此方法还是无法解决。
麻烦帮忙看看
麻烦有空看下,按照这个issues 还未解决。