我正在尝试通过我的Android 3.2平板电脑处理来自条码扫描仪USB的值,扫描仪在操作系统中成功工作,但我希望在程序中获取该值而不需要使用edittext,usbmanager主机和附件未将其列在通过USB连接的设备列表中。
我正在尝试通过我的Android 3.2平板电脑处理来自条码扫描仪USB的值,扫描仪在操作系统中成功工作,但我希望在程序中获取该值而不需要使用edittext,usbmanager主机和附件未将其列在通过USB连接的设备列表中。
@Override
protected boolean onKeyDown(int keyCode, KeyEvent event) {
Log.i("TAG", ""+ keyCode);
//I think you'll have to manually check for the digits and do what you want with them.
//Perhaps store them in a String until an Enter event comes in (barcode scanners i've used can be configured to send an enter keystroke after the code)
return true;
}
在Activity的keydown事件中,您将获得结果。
例如:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
char pressedKey = (char) event.getUnicodeChar();
Barcode += "" + pressedKey;
Toast.makeText(getApplicationContext(), "barcode--->>>" + Barcode, 1)
.show();
return true;
}
希望本文对您有所帮助。
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
Log.i("TAG", event.getCharacters());
return true;
}`
我也遇到了同样的问题,但是当我使用onKeyDown或onKeyUp时,它并不会每次都被调用,也就是说对于每个条形码字符都不会被调用。我使用了DiapatchKeyEvent,它很好地解决了这个问题。
dispatchKeyEvent
可以代替 onKeyDown
。
因为,dispatchKeyEvent 如果有活动,将把事件传递给 onKeyListener。这时会调用 onKey。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int c=event.getUnicodeChar();
Log.d("C:", "" + c);
}