Android. Можно ли перехватить событие ввода без поля ввода и открытой программной клавиатуры?

Можно ли как-то отловить событие ввода текста, если в приложении не отображается EditText (текстовое поле) и нет софт-клавиатуры?

ОС: Андроид 4.1.2

P.S. Объясню, зачем это нужно: есть устройство - Motorola TC55 - (терминал сбора данных, смартфон на Android 4.1.2 со считывателем штрих-кода (лазерным)), у которого с левой стороны есть кнопка для сканирования.

После ее нажатия лазерный сканер включается, считывает штрих-код и после считывания считываемых символов штрих-кода программно "нажимается".


person vladon    schedule 28.08.2014    source источник
comment
Вы пытались переопределить onKeyDown() в вашей деятельности?   -  person CommonsWare    schedule 28.08.2014


Ответы (2)


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

Вы можете найти дополнительную информацию в документации разработчика для TC55, это просто настроить устройство чтобы он отправил Intent с данными штрих-кода в ваше приложение.

Эту конфигурацию можно экспортировать и повторно использовать на другом устройстве. другой вариант — настроить приложение программно с помощью API профиля TC55. Таким образом, вы можете точно настроить декодер штрих-кода для своего варианта использования.

Использование намерений DataCapture намного чище, чем использование смоделированного ввода с клавиатуры.

person pfmaggi    schedule 15.01.2015

Вы пытались переопределить метод onKeyDown?

 @Override 
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    Log.d("MyApp", "key downed : " + keyCode);
    if ( keyCode == KeyEvent.KEYCODE_SCANNER /* HERE AN OBSVIOUSLY FALSE CONSTANT*/ ) {

       // perform your desired action here 

       // return 'true' to prevent further propagation of the key event 
       return true; 
    } 

    // let the system handle all other key events 
    return super.onKeyDown(keyCode, event);
} 

теперь вам просто нужно отследить и найти правильный код клавиши в этом списке: http://developer.android.com/reference/android/view/KeyEvent.html

см. этот ответ для получения более подробной информации: https://stackoverflow.com/a/19215087/1802663

person Apollo    schedule 28.08.2014