0
Отвечен

Обработка нажатия кнопки "Scan" в ТСД C4050.

alex seregin 3 года назад обновлен Николай «РайтСкан» 3 года назад 6

Добрый день. Приобрели у вас ТСД Chainway C4050. Занимаюсь разработкой Андроид приложения для этого сканера (Android 4.4) . В примерах исходных кодов показана обработка программных кнопок.

Мне необходимо отловить нажатие кнопки либо на "пистолете", либо кнопка "Скан" (желтая). Установил на устройство KeyboardEmulator (версия 1.7.9), и включил опцию "Barcode_1D", KeyCode=139. Далее в коде пишу:


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == 139) {
        if (event.getRepeatCount() == 0) {
            scan();
            Log.i("Info", "keyCode: " + keyCode);
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

При нажатии на все кнопки (кроме "желтой" и "пистолета") - событие срабатывает и в нем передается код нажатой кнопки.

Мне необходимо обработать нажатие двух выше указанных кнопок. Нажатие на них не "зажигает" событие onKeyDown.

ХОРОШО, МНЕ ПОНРАВИЛОСЬ

Вопрос решился оперативно. Николай разъяснил некоторые технические ньюансы.

Оценка удовлетворенности от alex seregin 3 года назад
На рассмотрении

Вам совершенно не нужен KeyboardEmulator.

Кнопки сканирования (на пистолете и на ТСД) имеют аппаратный код 67. Для того что бы их отлавливать Вы можете

- внести их в /system/usr/keylayout/Generic.kl

- использовать RS:Core для работы с кнопками и результатами сканирования (что более предпочтительнее). Пример работы с RS:Core 

RSCoreExample.zip


Добрый день. Запустил в дебагере пример высланного Вами кода. В строке:

 @Override
public void run() {
   try {
      _s = new ServerSocket(9005);
      while(!isInterrupted())  {
         Socket s = _s.accept();

Устройство перестает отвечать. Ни ошибки, ни каких-либо других действий не происходит.

Эм... извините, этот код нужно удалить, остался с неудачного примера.

И естественно, что этот поток висит, на работоспособность это никак не влияет, код исполняется в отдельном потоке.

А где же взять удачный пример?! Я никогда не работал ранее ни с какими сканерами и не представляю что такое RS:Core. Можете дать ссылку на документацию (но только не на это: http://www.rightscan.ru/ready-program/39-gotovye-resheniya/245-rs-driver ). Понятия не имею, как программировать сканеры...

Приложено. 

Данный пример работает с RS:Core версии 2.21 и выше. Данная версия доступна через RightScan C&C

RSCoreExample.zip

Сервис поддержки клиентов работает на платформе UserEcho