Xen*_*Sis 5 android barcode-scanner
我有一个物理条形码扫描仪,我想在应用程序中获取它的输入,即条形码,而无需集中精力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);
}
Run Code Online (Sandbox Code Playgroud)
我在SO中看到了几个问题,但没有一个给出真正的答案。
对我来说,对于条码扫描仪(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);
}
Run Code Online (Sandbox Code Playgroud)
小智 1
e.getCharacters() 应该为您提供完整的条形码。这对我来说适用于带有嵌入式二维条码阅读器的 PL-40L 设备,运行 Android 5.1dispatchKeyEvent(KeyEvent e) 为每个读取的条码触发一次,而不是为条码中的每个字符触发一次希望这有帮助
| 归档时间: |
|
| 查看次数: |
4313 次 |
| 最近记录: |