从基于 android 的移动条码扫描仪检测条码扫描事件

Detect barcode scanning event from android-based mobile barcode scanner

Android4.4.2 上有一个带有嵌入式激光条码扫描器和硬件 SCAN 按钮的设备。有什么方法可以用 java 接口挂钩 qr 扫描事件吗? 设备是 Sunlux xl-8681d,但它在 adb 设备列表中检测为 x301。

我用过类似的设备。当您单击某个可以编辑文本的区域并扫描条形码时,它会在该字段上打印吗?如果是,那么您可以在 Activity:

中使用以下代码片段

重写 dispatchKeyEvent 方法。小样本:

   @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getCharacters() != null && !event.getCharacters().isEmpty())
        //Add more code...
        return super.dispatchKeyEvent(event);

    }

即使没有 EditText 也可以做到。您需要像这样订阅广播意图:

const val QR_ACTION: String = "android.intent.ACTION_DECODE_DATA"
const val QR_EXTRA: String = "barcode_string"

private val receiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            try {
                Timber.d("Get intent ${intent.action}")
                if (QR_ACTION == intent.action) {
                    if (intent.hasExtra(QR_EXTRA)) {
                       val code = intent.getStringExtra(QR_EXTRA)
                       Timber.d("New QR code $code")
                       // now you have qr code here 
                    }
                }                    }
            } catch (t: Throwable) {
                // handle errors
            }
        }
    }

请先在您的扫描仪设置中检查 QR_ACTION 和 QR_EXTRA,不同品牌可能有所不同。