关于外设扫码枪或扫码盒子扫码监听处理

在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
    }

你可能感兴趣的:(关于外设扫码枪或扫码盒子扫码监听处理)