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

时间:2018-03-28 10:32:05

标签: android barcode

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

2 个答案:

答案 0 :(得分:3)

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

中使用以下代码段

覆盖dispatchKeyEvent方法。小样本:

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

    }

答案 1 :(得分:0)

即使没有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到您的扫描仪设置中,不同的品牌可能会有所不同。