Android无需编辑文本即可获得条形码扫描仪输入

2022-09-20 00:00:00 android barcode-scanner

我有一台物理条形码扫描仪,我希望在没有聚焦的EditText的情况下将其输入到应用中,即条形码。

我尝试在我的Activity中添加KeyListener。但是,它实现的方法(onKeyUponKeyDown等)都没有被调用。

然后我添加了dispatchKeyEvent,它起作用了,但调用的次数永远不会像条形码长度一样多。相反,在读取条形码之前,我视图中的某个随机button会从条形码扫描仪获得焦点。

String barcode = "";

@Override
public boolean dispatchKeyEvent(KeyEvent e) {
    char pressedKey = (char) e.getUnicodeChar();
    barcode += pressedKey;
    if (e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        Toast.makeText(getApplicationContext(), "barcode--->>>" + barcode, Toast.LENGTH_LONG)
                .show();
    }

    return super.dispatchKeyEvent(e);
}

我在中看到了几个问题,但没有一个真正给出具体的答案。


解决方案

对我来说,对于条形码扫描仪(usb,参考STA pcs),下一个代码可以工作:

@Override
public boolean dispatchKeyEvent(KeyEvent e) {

    if(e.getAction()==KeyEvent.ACTION_DOWN){
        Log.i(TAG,"dispatchKeyEvent: "+e.toString());
        char pressedKey = (char) e.getUnicodeChar();
        barcode += pressedKey;
    }
    if (e.getAction()==KeyEvent.ACTION_DOWN && e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        Toast.makeText(getApplicationContext(), 
            "barcode--->>>" + barcode, Toast.LENGTH_LONG)
        .show();

        barcode="";
    }

    return super.dispatchKeyEvent(e);
}

相关文章