13

我正在尝试通过我的 Android 3.2 平板电脑处理来自条形码扫描仪 USB 的值,扫描仪在操作系统中成功工作,但我想在没有编辑文本的情况下在程序中获取值,usbmanager 主机和附件没有列出它通过 USB 连接的设备。

4

4 回答 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 回答