Intereting Posts
Программно подключить Wifi пароль? Позиционирование EditText над клавиатурой Совет: реализация SlidingMenu на Android (J. Feinstein) Android ActionBar / ActionBarSherlock несколько вариантов поворота Элементы меню фрагмента ActionBar. Поставить их впереди Firebase Remote Config: не может читать значения, но выборка выполнена успешно Android: Как поместить Enum в Bundle? Gradle исключает arm64 libs Android Asset Studio: создание значков с изображением не работает Кордова – белый экран после всплеска, без исключений в консоли Как открыть PDF-файл в приложении для Android и разрешить пользователям использовать встроенные гиперссылки? Невозможно обновить \ инструменты – Инструменты командной строки Android SDK для Windows Невозможно решить Symbol Google API Client в Android Studio «Ресурс не найден» при создании приложения для Android в IntelliJ 9.0 Maia Public Beta Android – OAuthException – я продолжаю получать: «Активный токен доступа должен использоваться для запроса информации о текущем пользователе»

Android – нажмите клавишу клавиатуры

Я хочу поймать нажатие любой клавиши софт-клавиатуры. Я не хочу EditView или TextView в моей деятельности, событие должно обрабатываться из расширенного представления внутри моей активности.

Я просто попробовал это:

1) onKeyUp(int keyCode, KeyEvent event) действие onKeyUp(int keyCode, KeyEvent event) . Это не работает с softkeybord, он просто улавливает несколько жестких клавиш.

2) Создайте мой OnKeyListener и зарегистрируйте это в моем представлении, которое содержит зарегистрированный и рабочий OnTouchListener . Это не работает с softkeyboar.

3) Переопределите метод просмотра onKeyUp(int keyCode, KeyEvent event) . Это не работает вообще, если я устанавливаю свой OnKeyListener или не устанавливаю его.

4) С InputMethodManager объекта InputMethodManager метод showSoftInput и showSoftInput ему мой вид. Это не работает ни для повышения клавиатуры, действительно, мне нужно вызвать toggleSoftInput ; И не поймать ключевые события.

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

Solutions Collecting From Web of "Android – нажмите клавишу клавиатуры"

Попробуйте использовать dispatchKeyEvent(KeyEvent event) в вашей Activity

 @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.i("key pressed", String.valueOf(event.getKeyCode())); return super.dispatchKeyEvent(event); } 

С подсказкой vasart я могу получить событие KeyPress. Чтобы сделать код для ввода кода клавиатуры, я использовал функцию getUnicodeChar, передав ей состояние мета-кнопки, а затем просто обработчик задает проблему.

Это рабочий код :

 @Override public boolean dispatchKeyEvent(KeyEvent KEvent) { int keyaction = KEvent.getAction(); if(keyaction == KeyEvent.ACTION_DOWN) { int keycode = KEvent.getKeyCode(); int keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState() ); char character = (char) keyunicode; System.out.println("DEBUG MESSAGE KEY=" + character + " KEYCODE=" + keycode); } return super.dispatchKeyEvent(KEvent); } 

Конечно, эта работа работает только с символом ASCII.

Когда клавиатура открыта в действии, ваша деятельность фактически становится приоритетной … Все TextArea или TextFields имеют свой собственный механизм, чтобы получить нажатие на клавиатуре onScreen … если вы хотите использовать onKeyDown () listner для виртуальной клавиатуры, убедитесь, что вы установили в AndroidManifest Файл под вашей деятельностью android: windowSoftInputMode = "stateAlwaysVisible", тогда onkeyDown () будет работать, это сработало для меня …

Нет возможности управлять событиями нажатия клавиш на мягкой клавиатуре (экранной клавиатуре) только с аппаратной клавиатуры.

Для получения дополнительной информации: Обработка действий с клавиатурой