Android无需编辑文本即可获得条形码扫描仪输入
我有一台物理条形码扫描仪,我希望在没有聚焦的EditText
的情况下将其输入到应用中,即条形码。
Activity
中添加KeyListener
。但是,它实现的方法(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);
}
我在中看到了几个问题,但没有一个真正给出具体的答案。
解决方案
对我来说,对于条形码扫描仪(usb,参考STA pcs
),下一个代码可以工作:
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
if(e.getAction()==KeyEvent.ACTION_DOWN){
Log.i(TAG,"dispatchKeyEvent: "+e.toString());
char pressedKey = (char) e.getUnicodeChar();
barcode += pressedKey;
}
if (e.getAction()==KeyEvent.ACTION_DOWN && e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
Toast.makeText(getApplicationContext(),
"barcode--->>>" + barcode, Toast.LENGTH_LONG)
.show();
barcode="";
}
return super.dispatchKeyEvent(e);
}
相关文章