Android实现USB扫码枪获取扫描内容
作者:骑马打酱油 时间:2023-09-08 00:56:31
最近做了关于在Android设备上外接扫码的项目,在此记录一下关于Android USB扫码枪获取内容的问题
首先我这边使用是USB HID的扫码枪,即插即用,只需要在界面上有一个带有焦点的EditText ,就可以获取扫码枪扫描的内容。
是不是感觉很简单,但是今天我这里是讲的是在没有EditText 的情况下获取扫码枪扫描的内容。
USB HID扫码枪会将扫描出来的内容转化为键盘事件,对应的就是Android中的KeyEvent事件,所以我们只需要在我们的activity中
重写onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
checkLetterStatus(event);
keyCodeToNum(keyCode);
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
Log.e("键盘事件", buffer.toString());
buffer.delete(0, buffer.length());
return true;
}
return false;
}
上面我们说了扫码枪是响应我们的键盘事件,所以当扫码枪每扫描到一个字符的时候,就相当于按下了我们键盘上的对应按键,也就是keyCode,因此我们只需要处理这个keyCode就行了。
下面我把checkLetterStatus()检查是否大小写的方法跟keyCodeToNum()根据对应的keycode转换对应的数字跟字母
//检查shift键
private void checkLetterStatus(KeyEvent event) {
int keyCode = event.getKeyCode();
if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
//按着shift键,表示大写
mCaps = true;
} else {
//松开shift键,表示小写
mCaps = false;
}
}
}
//根据keycode得到对应的字母和数字
private void keyCodeToNum(int keycode) {
if (keycode >= KeyEvent.KEYCODE_A && keycode <= KeyEvent.KEYCODE_Z) {
if (mCaps) {
buffer.append(map.get(keycode).toUpperCase());
} else {
buffer.append(map.get(keycode));
}
} else if ((keycode >= KeyEvent.KEYCODE_0 && keycode <= KeyEvent.KEYCODE_9)) {
buffer.append(keycode - KeyEvent.KEYCODE_0);
} else {
//暂不处理特殊符号
}
}
上面的方法里面有个map,是用来存储字母的
Map<Integer, String> map = new HashMap<>();
map.put(29, "a");
map.put(30, "b");
map.put(31, "c");
map.put(32, "d");
map.put(33, "e");
map.put(34, "f");
map.put(35, "g");
map.put(36, "h");
map.put(37, "i");
map.put(38, "g");
map.put(39, "k");
map.put(40, "l");
map.put(41, "m");
map.put(42, "n");
map.put(43, "0");
map.put(44, "p");
map.put(45, "q");
map.put(46, "r");
map.put(47, "s");
map.put(48, "t");
map.put(49, "u");
map.put(50, "v");
map.put(51, "w");
map.put(52, "x");
map.put(53, "y");
map.put(54, "z");
最后用一个StringBuffer 来接收处理过的数据。大概就这样吧!
来源:https://blog.csdn.net/u011811983/article/details/82285507
标签:Android,扫码枪,扫描
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析二之前端调用后端
2023-08-19 17:32:33
![](https://img.aspxhome.com/file/2023/3/57693_0s.png)
详解Java语言中一个字符占几个字节?
2023-08-26 11:45:40
Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法
2021-11-04 11:19:45
![](https://img.aspxhome.com/file/2023/5/64055_0s.png)
在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法
2022-11-08 10:05:09
![](https://img.aspxhome.com/file/2023/5/125975_0s.png)
java生成图片验证码实例代码
2022-01-06 04:01:37
Java Swing中JTable渲染器与编辑器用法示例
2022-11-02 09:23:13
![](https://img.aspxhome.com/file/2023/1/68181_0s.jpg)
Android自定义Notification添加点击事件
2022-04-06 19:06:30
Android开发中Launcher3常见默认配置修改方法总结
2023-08-28 06:43:43
java 算法之希尔排序详解及实现代码
2022-07-12 23:09:45
c#添加图片、文本水印到PDF文件
2021-08-30 13:36:57
![](https://img.aspxhome.com/file/2023/0/111210_0s.png)
android中TabHost的图标(48×48)和文字叠加解决方法
2023-05-19 14:13:28
C# 文件上传下载(Excel导入,多线程下载)功能的实现代码
2021-12-09 20:16:34
Winform窗体圆角设计代码
2022-04-22 18:15:30
![](https://img.aspxhome.com/file/2023/1/126071_0s.jpg)
scala 读取txt文件的方法示例
2022-09-30 19:21:10
![](https://img.aspxhome.com/file/2023/3/75493_0s.png)
Android编程自定义组件实例详解
2022-12-20 13:11:58
![](https://img.aspxhome.com/file/2023/9/137959_0s.png)
PageHelper插件实现一对多查询时的分页问题
2021-11-05 07:02:34
C# 在PDF中创建和填充域
2022-05-14 05:49:23
![](https://img.aspxhome.com/file/2023/7/79117_0s.png)
jdk动态代理源码分析过程
2023-03-01 05:05:59
![](https://img.aspxhome.com/file/2023/7/68157_0s.png)
Java SpringBoot项目如何优雅的实现操作日志记录
2022-01-28 11:37:41
![](https://img.aspxhome.com/file/2023/7/108197_0s.png)
android中Fragment+RadioButton实现底部导航栏
2022-11-22 00:52:20
![](https://img.aspxhome.com/file/2023/3/139633_0s.png)