Как сделать обработку нажатий русских клавиш на клавиатуре
Мне нужно, чтобы приложение реагировало на нажатия русских клавиш на клавиатуре без использования EditText (клавиатура в приложении открыта).
Пробовал методы onKeyDown() и onKeyUp(), но они реагируют только на нажатия английских клавиш
Ответы (2 шт):
Вы не можете получать информацию о вводе из воздуха, система отдает их тому элементу, что сейчас в фокусе. Создайте на экране EditText, который будет невидим или находится за пределами видимости, программно повесьте на него фокус и перехватывайте нажатия в нем
Как следует из документации:
As soft input methods can use multiple and inventive ways of inputting text, there is no guarantee that any key press on a soft keyboard will generate a key event: this is left to the IME's discretion, and in fact sending such events is discouraged. You should never rely on receiving KeyEvents for any key on a soft input method.
Если перевести на понятный язык - это означает, что не гарантируется генерация KeyEvent на все события софт-клавиатуры.
Что делать тогда?
Ну например можно поставить TextWatcher на ваш EditText (его можно попробовать сделать скрытым и в фокусе)