在activity里面监听事件即可
ps:如果页面弹窗了dialog,相关事件会被dialog拦截掉,需要在dialog里面也加入监听,可考虑抽取到一个代码块里面。
/**
* 扫码事件分发
*/
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
//非扫码盒子事件则不处理
if ("Virtual".equals(event.device.name, ignoreCase = true)) {
return super.dispatchKeyEvent(event)
}
// 如果想过滤特殊输入设备,则可使用event.getDevice()中的属性过滤
// 并在非过滤条件后return super.dispatchKeyEventPreIme(event);
if (0 == event.unicodeChar) {
return true
}
// 每次按键后累计字符
if (event.action == KeyEvent.ACTION_DOWN) {
mResult += event.unicodeChar.toChar()
}
// 码枪默认使用KEYCODE_ENTER作为结束标志
if (event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER) {
toast(mResult)
ScanQrManager.getInstance().notifyResult(mResult)
mResult = ""
}
return true
}