2012-07-05 69 views
9

我试图通过我的Android 3.2平板电脑处理来自条码扫描仪USB的值,扫描仪在OS中很成功地工作,但我想在没有编辑文本的情况下获得程序中的值, usbmanager主机和配件未通过USB将其与连接的设备一起列出。通过Android设备处理条码扫描器的值

+0

您使用的是哪种条码扫描器?我也在做同样的项目,对我有帮助。 – 2014-02-22 11:33:18

回答

5

条码扫描器中的大部分插件(我见过)都是作为HID配置文件设备制作的,所以无论插入什么,都应将其视为键盘。我认为这就是为什么它们不会出现在USB主机API附件列表中。您应该能够从他们那里得到原始输入同样的方式,你将键盘的活动中通过重写Activity.onKeyDown(int keycode, KeyEvent ke)

像这样的事情在你的活动:

@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; 
} 
+0

谢谢!!它工作得很好! – 2012-07-06 08:54:34

+0

@BlackBird_K是否有任何Arduino板被用作通信的中间人? – 2014-02-22 13:45:28

+0

我试过这个,但是我不得不在barcodescanner中按下一个按钮。我可以用编程方式做,然后用户不需要按。它会自动检测和扫描? – 2016-04-27 01:40:34

2

你会得到活动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; 
} 

希望这篇文章可以帮助你。

0

我也有同样的问题,但是当我使用onKeyDown或onKeyUp时,并没有每次我调用barcode.I使用DiapatchKeyEvent的每个字符时,它很好。

+0

也许你应该考虑举一个例子吗? – 2017-07-31 14:19:15