当前位置: 首页 > article >正文

Android 蓝牙连接 HID 设备

Android 蓝牙连接 HID 设备

我连接的是蓝牙拍照遥控器。

最开始按照网上的思路,以为需要使用 BLE 方式去连接设备,然后接收设备的数据。连接成功后,一直收不到消息。

最后,机缘巧合下,更换连接方式,使用蓝牙 HID 方式去配对设备,但是没有给出如何收消息。

重写了 dispatchKeyEvent 方法,发现按蓝牙遥控器,有按键回调消息。

原来这样的 HID 设备,我们可以不用自己去连接,直接使用系统的蓝牙连接后,然后在 dispatchKeyEvent 中对按键事件处理即可。

    private void getDeviceInfo(int id) {
        InputManager im = (InputManager) getSystemService(Context.INPUT_SERVICE);
        InputDevice device = im.getInputDevice(id);
        Log.e("WillWolf", "getDeviceInfo-->" + device.toString());
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        Log.e("WillWolf", "dispatchKeyEvent-->");
        Toast.makeText(this, "按钮点击", Toast.LENGTH_SHORT).show();

		// 这里通过事件的 device id,可以获取到输入的设备信息,比如我的是绿联的蓝牙遥控器,那么打印的信息中,设备名字就是 UGREEN,可以根据这个对事件来源做区分。
        getDeviceInfo(event.getDeviceId());

		// 这里的事件来源不一定是 MOUSE 也可能是 SOURCE_KEYBOARD
        if (event.getSource() == InputDevice.SOURCE_MOUSE) {
            Log.e("WillWolf", "dispatchKeyEvent--> SOURCE_MOUSE");
        }
        return true;
    }

哎,折腾了半天,才发现原来某些 HID 类型的设备,或许不需要使用 BLE 方式去获取信息。


http://www.kler.cn/a/378146.html

相关文章:

  • C++中的字符串实现
  • 汽车IVI中控开发入门及进阶(四十):FDK AAC音频编解码软件库
  • jsp | servlet | spring forEach读取不了对象List
  • C#(委托)
  • 设置中 wifi密码框被输入键盘遮挡的处理
  • Java内存区域进一步详解
  • 【RAG】自动化RAG框架-“AutoML风”卷到了RAG?
  • 基于Android13源码分析Launcher启动
  • java多线程编程(二)一一>线程安全问题, 单例模式, 解决程线程安全问题的措施
  • FRAMES数据集:由谷歌和哈佛大学 联合创建一个综合评估数据集,目的测试检索增强生成系统在事实性、检索准确性和推理方面的能力
  • .card ~ img { width: 100%; height: 100%; object-fit: cover; }
  • git入门教程12:git命令与技巧
  • 论 ONLYOFFICE:开源办公套件的深度探索
  • PyTorch实战-手写数字识别-CNN模型
  • 【已解决,含泪总结】Ubuntu18.04下非root用户Anaconda3卸载重装,conda install终于不再报错
  • 可编辑31页PPT | 智慧业务中台规划建设与应用总体方案
  • 大厂面试真题-MVCC有哪些不好
  • 小白从零开始配置pytorch环境
  • Apache 负载均衡详细配置步骤
  • StringTable
  • 利用ExcelJS封装一个excel表格的导出
  • git 入门作业
  • 学习记录:基于Z-Stack 3.0.1的Zigbee智能插座实现
  • Django-分页
  • 构建后端为etcd的CoreDNS的容器集群(七)、编写适合阅读的域名管理脚本
  • Vue2.0 通过vue-pdf-signature@4.2.7和pdfjs-dist@2.5.207实现PDF预览