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
  • asp之家 软件编程 m.aspxhome.com