android实现扫码枪功能
作者:cuncaojin 时间:2022-08-28 21:33:35
扫码枪扫码效果等同于键盘录入,会回调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设备蓝牙连接扫描枪获取扫描内容
来源:https://blog.csdn.net/cuncaojin/article/details/103593984
标签:android,扫码枪
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
MyBatis SpringMVC整合实现步骤详解
2023-02-02 20:33:07
C#中const用法详解
2021-08-12 15:30:29
Java 8 Stream操作类型及peek示例解析
2021-07-17 20:42:08
C#基于socket模拟http请求的方法
2022-09-12 09:55:11
10个Elasticsearch查询的实用技巧分享
2022-09-21 07:32:14
详解Android 7.0 Settings 加载选项
2023-07-10 12:35:20
![](https://img.aspxhome.com/file/2023/5/137445_0s.png)
Spring Cloud Gateway重试机制的实现
2023-11-06 01:32:59
Android ViewDragHelper完全解析 自定义ViewGroup神器
2023-04-19 05:56:19
![](https://img.aspxhome.com/file/2023/3/138143_0s.gif)
一文详解kafka序列化器和拦截器
2023-06-18 01:06:08
![](https://img.aspxhome.com/file/2023/1/74751_0s.jpg)
Android 自定义输入支付密码的软键盘实例代码
2021-08-09 11:41:43
![](https://img.aspxhome.com/file/2023/9/99789_0s.png)
基于C#实现Windows服务状态启动和停止服务的方法
2022-07-27 12:17:57
Android中执行java命令的方法及java代码执行并解析shell命令
2022-08-27 15:45:13
java判断字符串是否有逗号的方法
2021-11-03 08:01:23
新手了解java IO基础知识
2023-10-20 22:19:45
![](https://img.aspxhome.com/file/2023/2/125332_0s.jpg)
Android自定义View之自定义评价打分控件RatingBar实现自定义星星大小和间距
2023-03-14 04:30:16
![](https://img.aspxhome.com/file/2023/1/137141_0s.jpg)
SpringBoot优雅地实现全局异常处理的方法详解
2023-09-06 09:17:02
Java中io流解析及代码实例
2023-08-22 16:46:48
![](https://img.aspxhome.com/file/2023/5/58195_0s.jpg)
21天学习android开发教程之SurfaceView
2023-04-17 17:01:56
![](https://img.aspxhome.com/file/2023/4/116044_0s.jpg)
C#最简单的关闭子窗体更新父窗体的实现方法
2021-07-24 18:58:27
java8新特性将List中按指定属性排序过滤重复数据的方法
2023-06-16 17:57:42
![](https://img.aspxhome.com/file/2023/5/71935_0s.jpg)