Проблема с клавиатурой Android при отпускании клавиш - PullRequest
2 голосов
/ 19 февраля 2012

Сегодня я попытался загрузить свою игру на xperia mini pro и понял, что всякий раз, когда нажимается аппаратная кнопка, я получаю обратный вызов onKeyDown, как и ожидалось, но затем мгновенно получаю onKeyUp на той же клавише и когда я фактически отпускаю клавишу, метод обратного вызова не вызывается.

Входной код выглядит следующим образом:

    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;
}

Есть ли способ решить эту проблему?

РЕДАКТИРОВАТЬ: извините за onKeyPressedи released.Фактически означают onKeyDown и onKeyUp:

    @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);
}

нажатие и отпускание методов вызова кнопок метода с параметром true или false.

1 Ответ

0 голосов
/ 19 февраля 2012

Попробуйте использовать:

@Override
public boolean onKeyUp(inr keyCode,KeyEvent event) {
//your stuffs
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...