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实现扫码枪功能】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- android第三方框架(五)ButterKnife
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树