Как получить давление от экранной (виртуальной) клавиатуры? (Android)

Мне нужно получить некоторую информацию с экранной клавиатуры, например нажатия, KeyDown и KeyUp в Android, но я не знаю, как это сделать.

Официальный сайт Android говорит, что:

Примечание. При обработке событий клавиатуры с помощью класса KeyEvent и связанных API-интерфейсов следует ожидать, что такие события клавиатуры происходят только с аппаратной клавиатуры. Вы никогда не должны полагаться на получение событий клавиш для любой клавиши на программном методе ввода (экранная клавиатура).

Я также попробовал следующий метод без успеха. Это на самом деле работает с аппаратными клавишами, такими как кнопка назад.

myEditText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int i, KeyEvent keyEvent) {
            return false;
        }
    });

Я думал о том, чтобы найти способ расширить экранную клавиатуру, но все равно безуспешно! Кто-нибудь когда-нибудь пытался это сделать? Я буду признателен за вашу помощь заранее.

ОБНОВЛЕНИЕ: после попытки многих решений я придумал то же самое решение использования моей собственной клавиатуры, предложенное Кроссовочкиным, в конечном счете. Кажется, что решение не так уж и плохо, если кто-то хочет изменить клавиатуру Android как новую. Таким образом, он появляется в "Настройках -> Методы ввода", так что пользователь может переключиться на новую клавиатуру, что хорошо, так как она доступна из всех других приложений. Поскольку еще не ясно, можно ли получить давление от стандартной виртуальной клавиатуры, поэтому я подумал, что вопрос можно оставить открытым.

1 ответ

Вы можете попробовать позвонить getPressure() метод из MotionEventСсылка: http://developer.android.com/reference/android/view/MotionEvent.html

Фрагмент кода:

view.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        float pressure = event.getPressure();
    }
});

ОБНОВЛЕНИЕ: Вы можете создать свою собственную клавиатуру и получить из нее давление. Возможно, пользователю не понравится использовать вашу клавиатуру вместо клавиатуры по умолчанию. Но я думаю, что это лучшее решение для вашей ситуации.

Больше информации о:
KeyboardView: http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html
Пример создания собственной клавиатуры: https://github.com/rciovati/Android-KeyboardView-Example

Другие вопросы по тегам