android - 从条形码扫描器捕获键盘输入

标签 android barcode-scanner

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

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

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

Almsot 我在这里找到的所有帖子都是关于使用相机扫描条形码的(使用它构建了我的原始原型(prototype),但性能不佳)。这里的一篇旧帖子给了我关于重写 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;
        }
    });

关于android - 从条形码扫描器捕获键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51620639/

相关文章:

Android 从相机获取图像 Uri

android - 什么是 START_STICKY、START_NOT_STICKY 和 START_REDELIVER_INTENT 服务

android - 使用 Android 阅读低对比度 (3D) 打印的二维码

android - android 中的斑马扫描仪集成

android - 在安卓应用中嵌入 ZXing

android - 如何创建与 <uses-library> 元素一起使用的共享库

android - 使用 android maven 插件调试应用程序启动

android - 如何将EditText中的文本显示到ListView中?

python - 如何使用 python 中的 evdev 从 hid 设备(条形码扫描仪)获取有效的可理解字符串

c# - 如何使用 C# 在 Windows 窗体中生成随机数和条形码?