Android 连接蓝牙扫码器 无输入框
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/p/15934821.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误