Android 连接蓝牙扫码器无输入框的实现
作者:Uncle 时间:2023-05-06 02:37:34
Android 的APP 需要集成一个蓝牙扫码器, 特别的是,需要扫码的地方是没有输入框的(EditText),不能通过直觉上理解的通过对EditText输入事件进行监听处理,取得扫码结果。并且设备也没有提供SDK。
细想了一下, 蓝牙扫码器本质应该是个HID设备,相当于蓝牙键盘。而后豁然开朗。
每一次扫码应该会触发按键事件,通过监听当前Activity的按键事件,应该可以实现,无输入框的情况下取得扫码结果。
重载Activity中的dispatchKeyEvent实现按键监听。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
InputDevice inputDevice = event.getDevice();
if (inputDevice != null) {
int keyboardType = event.getDevice().getKeyboardType();
String deviceName = event.getDevice().getName();
boolean isVirtual = event.getDevice().isVirtual();
//可以根据输入设备信息判断是否为特定扫码器输入
if (!isVirtual) {
scannerHelper.onScanerInput(event);
}
}
}
通常扫码器在扫码结果后会追加一个结束字符,我的这个设备默认为回车。 所以接收到回车可以认为一个扫码结果“输入”完成。
public class ScannerHelper {
private String buffer ="";
private MainOneActivity mainOneActivity;
public ScannerHelper(MainOneActivity mainOneActivity){
this.mainOneActivity = mainOneActivity;
}
public void onScanerInput(KeyEvent event){
if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
mainOneActivity.onScannerResult(buffer);//回调扫码结果
buffer="";
}else{
if (event.getAction() == KeyEvent.ACTION_UP && event.isPrintingKey()){
buffer += (char)event.getUnicodeChar();
}
}
}
}
测试OK。
来源:https://www.cnblogs.com/uncleguo/archive/2022/02/25/15934821.html
标签:Android,扫码,无输入框
0
投稿
猜你喜欢
Android Studio和阿里云数据库实现一个远程聊天程序
2023-06-14 21:09:16
java HttpClient传输json格式的参数实例讲解
2023-08-08 13:21:26
C#实现简单的计算器小功能
2023-05-13 06:46:11
Mybatis 动态表名+Map参数传递+批量操作详解
2023-04-02 04:08:00
使用Java和ffmpeg把音频和视频合成视频的操作方法
2022-08-22 07:30:20
Java流程控制之循环结构for,增强for循环
2023-11-03 10:45:20
Java编程Nashorn实例代码
2022-07-30 05:28:21
关于Java利用反射实现动态运行一行或多行代码
2021-11-27 23:12:55
C#使用GZipStream解压缩数据文件的方法
2022-09-22 15:40:34
通过图例了解PowerDesigner使用方法
2021-06-05 23:16:24
浅谈java中String StringBuffer StringBuilder的区别
2023-11-29 13:34:40
Android手势识别功能
2022-07-23 22:04:26
Android实现掷骰子效果
2022-06-16 01:09:16
Java的优先队列PriorityQueue原理及实例分析
2023-03-14 08:11:00
C/C++ Qt TreeWidget 单层树形组件应用小结
2022-05-06 16:17:13
浅析Java设计模式编程中的单例模式和简单工厂模式
2021-10-13 15:27:54
Dubbo实现分布式日志链路追踪
2023-08-23 21:00:54
使用adb or fastboot命令进入高通的9008(edl)模式的两种方法
2023-02-02 15:50:49
Android项目实现视频播放器
2022-10-05 07:53:35
java代码实现MD5加密及验证过程详解
2023-09-26 02:50:45