android实现扫码枪功能
扫码枪扫码效果等同于键盘录入,会回调dispatchKeyEvent键盘按下事件。
开发环境:有线扫码枪,支持二维码
代码
1. 接收数据
/** * 扫码枪扫码处理 */ @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(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() { @Override public 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设备蓝牙连接扫描枪获取扫描内容
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持海外IDC网。