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。

到此这篇关于Android 连接蓝牙扫码器无输入框的文章就介绍到这了,更多相关Android 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android 扫码枪不使用输入框获取扫描值的操作方法

    dispatchKeyEvent获取扫描结果 这是在CSDN上看到的评论,打印出来的并没有有关扫描的信息,我把打印的日志放在了最外层,发现其中一条是有关扫描的条码 event Action:ACTION_MULTIPLE,keyCode:KEYCODE_UNKNOWN dispatchKeyEvent: KeyEvent { action=ACTION_MULTIPLE, keyCode=KEYCODE_UNKNOWN, scanCode=0, characters="3433422404403

  • Android 连接蓝牙扫码器无输入框的实现

    Android 的APP 需要集成一个蓝牙扫码器, 特别的是,需要扫码的地方是没有输入框的(EditText),不能通过直觉上理解的通过对EditText输入事件进行监听处理,取得扫码结果.并且设备也没有提供SDK. 细想了一下, 蓝牙扫码器本质应该是个HID设备,相当于蓝牙键盘.而后豁然开朗. 每一次扫码应该会触发按键事件,通过监听当前Activity的按键事件,应该可以实现,无输入框的情况下取得扫码结果. 重载Activity中的dispatchKeyEvent实现按键监听. @Overri

  • Android集成zxing扫码框架功能

    我们知道zxing是一个强大的处理二维码和条形码等的开源库,本篇文章记录一下自己在项目中集成zxing开源库的过程. 导入依赖 implementation 'com.google.zxing:core:3.3.3' 申请权限 在AndroidManifest中申请相应权限: <!--相机--> <uses-permission android:name="android.permission.CAMERA" /> <!--震动--> <use

  • Android接入USB扫码模块的方法

    前言 USB扫码模块可以是扫描盒子或者扫码枪之类的,一根USB线作为供电和数据通信使用,有些扫码模块支持虚拟串口模式,虚拟串口模式读取数据会比较简单一点,和普通的串口一样操作即可,就是通过虚拟串口口+波特率即可获取到数据,这里主要讲读取USB模式下的数据. 1.读取USB模式下的数据 USB模式下的扫码模块相当于一个外接键盘,也就是它必须在有光标的地方才能进行扫码,且是直接把扫到的内容自动输入到输入框中,并不受我们的控制,所以我们必须另外想办法,安卓系统中有这么个方dispatchKeyEven

  • Java Spring Boot实现简易扫码登录详解

    目录 前言 项目简介 实现思路 实现步骤 1.用户访问网页端,选择扫码登录 2.使用手机扫码,二维码状态改变 3.手机确认登录 效果演示 总结 前言 本文将介绍基于SpringBoot + Vue + Android实现的扫码登录demo的总体思路,完整代码已上传到GitHub.Web端体验地址:http://47.116.72.33/(只剩一个月有效期),apk下载地址:https://github.com/Zjvngvn/qrscan/releases/tag/0.0.1.用户名:非空即可,

  • springboot扫码登录的简单实现

    目录 前言 项目简介 实现思路 实现步骤 前言 本文将介绍基于SpringBoot + Vue + Android实现的扫码登录demo的总体思路,完整代码已上传到GitHub.Web端体验地址:http://47.116.72.33/(只剩一个月有效期),apk下载地址:https://github.com/zhangjiwei1221/qrscan/releases/tag/0.0.1.用户名:非空即可,密码:123456,效果见文末,整体实现如有不妥之处,欢迎交流讨论,实现部分参考二维码扫

  • Android手机(设备)连接扫描枪扫码遇到的问题

    以下内容以我发布前的时间为准,可能之后厂商给设备改进后都没有这些问题. 1.android手机连接扫描枪有些手机显示不了系统键盘 2.连接扫描枪使用的是百度输入法,条码是字母数字组合的扫码会出现乱码(如条码:A0011305150081:小米没有键盘的扫描出现:a0011305150081,啊1305150081,等:华为有键盘的出现:a0011305150081,0011305150081):如下图: 3.连接扫描枪不使用百度输入法,小米手机使用搜狗输入法扫码:A0011305150081,出

  • Android设备蓝牙连接扫描枪获取扫描内容

    条形扫描枪主要可以扫描条形码和二维码等,扫描速度比手机扫描设备快得多,本文简单介绍android 通过蓝牙监听蓝牙连接,当扫描设备连接完成后,扫描设备相当于外接键盘,通过监听外接键盘输入事件,获取扫描出的内容. 其他参照文档:Android设备获取扫码枪扫描内容 1.蓝牙配对 打开系统设置,蓝牙配对扫描枪, 一般扫描枪说明书都有写,配对完成后,显示已连接 2.AndroidManifest中配置权限 在中配置蓝牙连接所需要的权限 <!-- 蓝牙 --> <uses-permission

  • Android 简单的图片查看器源码实现

    本文介绍了Android 简单的图片查看器源码实现,分享给大家,具体如下: public class MainActivity extends Activity { private EditText et_path; private ImageView iv; //创建handler 对象 // private Handler handler = new Handler(){ // // //处理消息 // public void handleMessage(android.os.Message

  • Android 网络html源码查看器详解及实例

    Android 网络html源码查看器详解及实例 IO字节流的数据传输了解 Handler的基本使用 1.作品展示 2.需要掌握的知识 FileInputStream,FIleOutputStream,BufferInputStream,BufferOutStream的读写使用与区别 //进行流的读写 byte[] buffer = new byte[1024 * 8]; //创建一个写到内存的字节数组输出流 ByteArrayOutputStream byteArrayOutputStream

  • Android实现蓝牙(BlueTooth)设备检测连接

    无论是WIFI还是4G网络,建立网络连接后都是访问互联网资源,并不能直接访问局域网资源.比如两个人在一起,A要把手机上的视频传给B,通常情况是打开手机QQ,通过QQ传送文件给对方.不过上传视频很耗流量,如果现场没有可用的WIFI,手机的数据流量又不足,那又该怎么办呢?为了解决这种邻近传输文件的问题,蓝牙技术应运而生.蓝牙技术是一种无线技术标准,可实现设备之间的短距离数据交换. Android为蓝牙技术提供了4个工具类,分别是蓝牙适配器BluetoothAdapter.蓝牙设备BluetoothD

随机推荐