Android处理二维码扫码枪数据

        最近在处理一个项目,需要用到扫码枪,扫码枪的扫码效果等同于键盘录入,会回调dispatchKeyEvent键盘按下事件。之前自己写的代码无法区分大小写和符号,在网上找到了现在的处理方法可以区分大小写和符号。我使用的是Android 7.1.2的系统测试的,不需要另外添加权限。

1、接收数据

    /**
     * 扫码枪扫码处理
     * @param event
     * @return
     */
    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            int keyCode = event.getKeyCode();
            char aChar = (char) event.getUnicodeChar();
            if (aChar != 0) {
                mStringBufferResult.append(aChar);
            }
            mHandler.removeCallbacks(mScanningFinishedRunnabled);
            //若为回车键,直接返回
            if (keyCode == KeyEvent.KEYCODE_ENTER) {
                mHandler.post(mScanningFinishedRunnabled);
            } else {
                //延迟post,若500ms内,有其他事件
                mHandler.postDelayed(mScanningFinishedRunnabled, 500L);
            }
            return true;
        }
        return super.dispatchKeyEvent(event);
    }

2、处理数据

    /**
     * 二维码信息原始数据容器
     */
    private StringBuilder mStringBufferResult = new StringBuilder();
    private Handler mHandler = new Handler();

    private Runnable mScanningFinishedRunnabled = new Runnable() {
        @Override
        public void run() {
            String qrcode = mStringBufferResult.toString(); //
            mStringBufferResult.setLength(0);   //把二维码数据容器清空
            //这里用来处理扫码结果
            Log.i(TAG, qrcode);
        }
    };

参考:android实现扫码枪功能

你可能感兴趣的:(Android,android)