简体   繁体   English

Android键盘按键释放问题

[英]Android keyboard issue with key release

Today I tried loading my game onto xperia mini pro and realized, that whenever the hardware button is pressed I recieve onKeyDown callback as expected, but then instantly I get onKeyUp on same key and when I actually release the key, no callback method is called. 今天,我尝试将游戏加载到xperia mini pro上,并意识到,每按一次硬件按钮,我onKeyDown按预期收到onKeyDown回调,但是当我立即释放同一键上的onKeyUp时,当我实际释放该键时,不会调用任何回调方法。

Input code looks like this: 输入代码如下:

    public final boolean buttons(int keyCode, KeyEvent event, boolean state) {
    boolean handled = true;
    switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_UP:
        case KeyEvent.KEYCODE_W:
            this.input.KEY_UP = state;
            Logger.print("UP: " + state);
        break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            Logger.print("RIGHT: " + state);
            this.input.KEY_RIGHT = state;
        break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
        case KeyEvent.KEYCODE_S:
            this.input.KEY_DOWN = state;
            Logger.print("DOWN: " + state);
        break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            this.input.KEY_LEFT = state;
        break;
        case KEYCODE_BUTTON_SQUARE:
        case KeyEvent.KEYCODE_L:
            this.input.KEY_FORWARD = state;
        break;
        case KEYCODE_BUTTON_TRIANGLE:
        case KeyEvent.KEYCODE_K:
            this.input.KEY_BACKWARD = state;
        break;
        case KeyEvent.KEYCODE_DPAD_CENTER:
            this.input.KEY_ACTION = state;
        break;
        default:
            handled = false;
        break;
    }
    return handled;
}

Is there a way to solve this problem? 有办法解决这个问题吗?

EDIT: sorry for onKeyPressed and released . 编辑:对onKeyPressedreleased感到抱歉。 Actually meant onKeyDown and onKeyUp : 实际上是指onKeyDownonKeyUp

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    return features.inputManager.inputButtons.press(keyCode, event) ?
            true : super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    return features.inputManager.inputButtons.release(keyCode, event) ?
            true : super.onKeyUp(keyCode, event);
}

press and release methods call buttons method with either true or false parameter. 按下和释放方法使用true或false参数的调用按钮方法。

Try to use: 尝试使用:

@Override
public boolean onKeyUp(inr keyCode,KeyEvent event) {
//your stuffs
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM