Android 4.4.2上有一个带嵌入式激光条码扫描器和硬件SCAN按钮的设备。有没有方法用java接口挂钩qr扫描事件? 设备是Sunlux xl-8681d,但它在adb设备列表中检测为x301。
答案 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到您的扫描仪设置中,不同的品牌可能会有所不同。