2016-07-22 5 views
1

У меня есть сканер штрих-кода, и я хочу получить его ввод, т. Е. Штрих-код, в приложении без фокуса EditText.android get barcode scanner input без edittext

Я попытался добавить KeyListener в мой Activity. Однако ни один из его реализованных методов (onKeyUp, onKeyDown и т. Д.) Не был вызван.

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

String barcode = ""; 

@Override 
public boolean dispatchKeyEvent(KeyEvent e) { 
    char pressedKey = (char) e.getUnicodeChar(); 
    barcode += pressedKey; 
    if (e.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
     Toast.makeText(getApplicationContext(), "barcode--->>>" + barcode, Toast.LENGTH_LONG) 
       .show(); 
    } 

    return super.dispatchKeyEvent(e); 
} 

Я видел несколько вопросов там, в SO, но никто не дал конкретного ответа.

+0

Я думаю, чтобы действительно решить эту проблему, вам понадобится документация из сканера штрих-кода - что именно он должен отправлять в ваше приложение? Это эмуляция клавиатуры (обычная вещь) или что-то еще? Любые другие подсказки из документации устройства? – GreyBeardedGeek

+0

Искал документацию, но ничего не нашел. Я проверил его с помощью «EditText», и мой единственный вывод заключается в том, что после отправки номера штрих-кода один за другим он выдает «ENTER» – XeniaSis

ответ

1

e.getCharacters() должен предоставить вам полный штрих-код. Это работает для меня на PL-40L устройство со встроенным 2d считыватель штрих-кода, работающий Android 5.1 dispatchKeyEvent (KeyEvent е) вызывается один раз для каждого считанного штрих-кода, а не для каждого символа в штрих-код Надеюсь, что это помогает