Android 捕获来自条形码扫描仪的键盘输入

Android 捕获来自条形码扫描仪的键盘输入,android,barcode-scanner,Android,Barcode Scanner,我正在构建一个基本的价格检查器应用程序,它可以扫描条形码并显示产品的信息,我正在尝试在内置条形码扫描仪的android平板电脑上运行它 扫描仪可以工作,如果我在应用程序上放置一个文本框并对其进行聚焦,我扫描的条形码可以很好地写入其中-但是如果应用程序没有聚焦在文本框上,我就无法捕获输入(应用程序应该没有输入区域,只有图像和文本视图标签) 扫描仪在输入android设置中显示为HID键盘 Almsot我在这里找到的所有帖子都是关于使用相机扫描条形码的(我用它制作了我的原始原型,但性能不佳)。这里的

我正在构建一个基本的价格检查器应用程序,它可以扫描条形码并显示产品的信息,我正在尝试在内置条形码扫描仪的android平板电脑上运行它

扫描仪可以工作,如果我在应用程序上放置一个文本框并对其进行聚焦,我扫描的条形码可以很好地写入其中-但是如果应用程序没有聚焦在文本框上,我就无法捕获输入(应用程序应该没有输入区域,只有图像和文本视图标签)

扫描仪在输入android设置中显示为HID键盘

Almsot我在这里找到的所有帖子都是关于使用相机扫描条形码的(我用它制作了我的原始原型,但性能不佳)。这里的一篇老帖子给了我一个关于重写dispatchKeyEvent的提示

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getCharacters() != null && !event.getCharacters().isEmpty()) {
        isRunning = true;
        Log.d(TAG, "Starting");

        String barcode = event.getCharacters();
        new myImageTask().execute(barcode);
    }
    return super.dispatchKeyEvent(event);
}
然而,它似乎没有捕获任何输入

我查看了覆盖KeyUp和KeyDown事件,但它们似乎是显式构建的,用于捕获单键事件


是否还有另一个事件可以用来捕获和读取扫描仪的完整输入,或者我应该将KeyDown事件链接起来,将每个键缓冲到一个静态变量中,然后在接收到一个特殊的输入终止字符并对结果运行我的任务后?

看看下面的代码是否对您有帮助:

barcodeEditText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN)
            {
                switch (keyCode)
                {
                    case KeyEvent.KEYCODE_DPAD_CENTER:
                    case KeyEvent.KEYCODE_ENTER:
                            saveToDBMethod();
                            barcodeEditText.setText("");
                            barcodeEditText.requestFocus();
                        return true;
                    default:
                        break;
                }
            }

            return false;
        }
    });

以防万一:内置扫描仪的平板电脑是否有SDK,以便您可以直接访问条形码数据?供应商未提供任何SDK或相关信息。扫描仪组件显示为Honeywell品牌,因此我可以在那里检查是否没有从核心Android级别读取其输入的wya。如果找不到SDK(通常搜索型号或类似设备的图像,如果重新标记型号),您可以尝试使用1x1 edittext来保持焦点并捕获hid输入。