我正在尝试通过我的 Android 3.2 平板电脑处理来自条形码扫描仪 USB 的值,扫描仪在操作系统中成功工作,但我想在没有编辑文本的情况下在程序中获取值,usbmanager 主机和附件没有列出它通过 USB 连接的设备。
问问题
12896 次
4 回答
9
大多数插入式条形码扫描仪(我见过)都是作为 HID 配置文件设备制作的,因此无论插入什么设备,基本上都应该将它们视为键盘。我认为这就是为什么它们没有出现在 USB 主机 API 附件列表中的原因。您应该能够通过覆盖Activity.onKeyDown(int keycode, KeyEvent ke)从它们获取原始输入,就像在 Activity 中使用键盘一样
在你的活动中是这样的:
@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;
}
于 2012-07-05T19:02:24.923 回答
4
您将获得 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;
}
希望这篇文章对你有所帮助。
于 2014-04-11T13:36:30.147 回答
0
我也有同样的问题,但是当我使用 onKeyDown 或 onKeyUp 时,并不是每次都调用它,我的意思是条形码的每个字符。我使用了 DiapatchKeyEvent,它工作得很好。
于 2017-07-31T13:52:26.320 回答
0
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
Log.i("TAG", event.getCharacters());
return true;
}`
于 2018-07-14T10:51:00.103 回答