android实现扫码枪功能

扫码枪扫码效果等同于键盘录入,会回调dispatchKeyEvent键盘按下事件。

开发环境:有线扫码枪,支持二维码
代码
1. 接收数据

/*** 扫码枪扫码处理*/@Overridepublic 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(mScanningFishedRunnable); //若为回车键,直接返回if (keyCode == KeyEvent.KEYCODE_ENTER) {mHandler.post(mScanningFishedRunnable); } else {//延迟post,若500ms内,有其他事件mHandler.postDelayed(mScanningFishedRunnable, 500L); }return true; }return super.dispatchKeyEvent(event); }

2. 处理数据

/** * 二维码信息对象 */private QRCode qrCodeBean; /*** 二维码信息原始数据容器*/private StringBuilder mStringBufferResult = new StringBuilder(); private Handler mHandler = new Handler(); private Runnable mScanningFishedRunnable = new Runnable() {@Overridepublic void run() {scanOk = false; String qrcode = mStringBufferResult.toString(); if (!TextUtils.isEmpty(qrcode)) {// 扫码确定参数Gson gson = new Gson(); try {qrCodeBean = gson.fromJson(qrcode, QRCode.class); // 你的代码...// 如果要支持中文,数据用可以URLEncoder/URLDecoder编解码} catch (JsonSyntaxException e) {// 解析失败...} catch (UnsupportedEncodingException e) {// 解码失败...} finally {mStringBufferResult.setLength(0); }}}};

参考:Android设备蓝牙连接扫描枪获取扫描内容

【android实现扫码枪功能】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读