android获取条形码扫描仪输入而无需edittext

Xen*_*Sis 5 android barcode-scanner

我有一个物理条形码扫描仪,我想在应用程序中获取它的输入,即条形码,而无需集中精力EditText

我尝试添加一个KeyListener在我的Activity。但是,未调用其所有已实现的方法(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);
}
Run Code Online (Sandbox Code Playgroud)

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

Hps*_*urn 8

对我来说,对于条码扫描仪(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);
}
Run Code Online (Sandbox Code Playgroud)


小智 1

e.getCharacters() 应该为您提供完整的条形码。这对我来说适用于带有嵌入式二维条码阅读器的 PL-40L 设备,运行 Android 5.1dispatchKeyEvent(KeyEvent e) 为每个读取的条码触发一次,而不是为条码中的每个字符触发一次希望这有帮助