Активность, обнаруживающая все события клавиатуры, кроме возврата на задний план внутри EditText - PullRequest
1 голос
/ 28 мая 2019

В настоящее время я пытаюсь реализовать фреймворк, чтобы фиксировать каждое взаимодействие пользователя с приложением.У меня есть Activity, которая может записывать события пользовательских клавиш следующим образом:

@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent kEvent) {
    final int action = kEvent.getAction();
    final int keyCode = kEvent.getKeyCode();
    final char character = (char) kEvent.getUnicodeChar();
    if (action == KeyEvent.ACTION_UP) {
        Log.i(">>>>DEBUG", "KEY EVENT");
        final long res = kEvent.getEventTime() - this.timestampLastKeyboardEvent;
        switch (keyCode) {
            case KeyEvent.KEYCODE_DEL:
                // FIXME
                this.capuccinoEventLogger.removeLastCharacter();
                break;
            case KeyEvent.KEYCODE_TAB:
            case KeyEvent.KEYCODE_ENTER:
                this.capuccinoEventLogger.markLastCapuccinoEventFinal();
                break;
            default:
                // HACK: there is a strange behaviour when a special character is
                // typed the current method is invoked twice, one for the normal
                // key and the other for the shift + key code.
                if (res != 0) {
                    CapuccinoKeyboardEvent ce = new CapuccinoKeyboardEvent(character);
                    this.capuccinoEventLogger.addNewCapuccinoEvent(ce);
                }
                break;
        }
        this.timestampLastKeyboardEvent = kEvent.getEventTime();
    }
    return super.dispatchKeyEvent(kEvent);
}

Проблема в том, что обнаруживается каждый ключ, кроме возврата, когда я пытаюсь захватить события из EditText.Почему это происходит?

1 Ответ

0 голосов
/ 28 мая 2019

У многих людей была такая же проблема. Я нашел хорошую ссылку об этом: Android-не может снимаемого забой-удалить-пресс-в-мягкой клавиатуре

Однако, если вы хотите иметь простое решение, вы можете сделать это:

  1. Получить размер текстового символа
  2. Прослушивание каждого изменения при просмотре текста редактирования
  3. Сравнить до и после размеров
  4. Если до размера больше, чем после размера, вы можете сосчитать, как удаление Backspace нажмите

@ canerkaseler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...