【问题标题】:Handle barcode scanner value via Android device通过 Android 设备处理条码扫描仪值
【发布时间】:2018-07-14 18:51:00
【问题描述】:

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

【问题讨论】:

  • 您使用的是哪种条码扫描仪?我也在做同样的项目,这对我有帮助。
  • 我也有同样的问题。请检查我的解决方案here

标签: android barcode barcode-scanner


【解决方案1】:

大多数插入式条形码扫描仪(我见过)都是作为 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;
 }

【讨论】:

  • @BlackBird_K 是否有任何 Arduino 板用作通信的中间人?
  • 我试过这个并且工作了,但我必须在barcodescanner中按下一个按钮。我可以以编程方式进行吗,然后用户不需要按下。它会自动检测和扫描吗?
  • 我有一个条形码扫描仪,它在 marshmellow 上发送 Enter 事件,但在 IcreaCream 上没有发送...有什么想法吗?
【解决方案2】:

您将获得 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;
}

希望这篇文章对你有所帮助。

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题,但是当我使用 onKeyDown 或 onKeyUp 时,并不是每次我的意思是条形码的每个字符都调用它。我使用了 DiapatchKeyEvent,效果很好。

    【讨论】:

    • 也许你应该考虑举个例子?
    【解决方案4】:
    public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
        Log.i("TAG", event.getCharacters());
        return true;
    }`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多