Android:读取扫码枪/读卡器扫描出的信息

2,593 阅读1分钟
最近做了个功能,类似于丰巢智能柜那种,扫码存货。 扫码枪是USB直插的,插上就可以用。扫码枪扫描到数据后相当于触发键盘点击事件,如果页面上有输入框的话,会把扫描到的数据输入到输入框里面。

 但是呢,我们要做的是在页面没有输入框的情况下,获取到扫码枪扫描到的数据,这时候就要用到dispatchKeyEvent了。

 override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
        if (event?.action == KeyEvent.ACTION_DOWN) {
            val char = event.unicodeChar.toChar()
            sb.append(char)
        }

        if (event?.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER) {
        	//在这里面添加你自己的逻辑
		Log.e("xxx","本次扫描到的数据:$sb")
		sb.setLength(0)
        }
        return super.dispatchKeyEvent(event)
    }

当event.keyCode为KeyEvent.KEYCODE_ENTER也就是相当于按了一下回车,这就代表本次扫描结束,然后对数据做一些逻辑处理就行了(USB读卡器读取ID、IC卡同上)。 

不过在页面上有输入框的情况下,这里获取到的数据都是空的,我猜测是键盘消费了这些事件。