Android 蓝牙连接 HID 设备

Android 蓝牙连接 HID 设备

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

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

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

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

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

java 复制代码
    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 方式去获取信息。

相关推荐
齊家治國平天下3 小时前
Android 14 Vehicle HAL (VHAL) 设计与实现深度解析
android·aaos·carservice·车载开发·android 14·vhal·vehicle hal
AFinalStone9 小时前
Android 7系统网络(八)应用API层—ConnectivityManager使用与实战调试
android·网络
plainGeekDev10 小时前
kapt 替换为 KSP
android·java·kotlin
蜡台10 小时前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy
阿pin13 小时前
Android随笔-SharedPreferences
android·sp
阿pin14 小时前
Android随笔-DataStore
android·datastore
茶栀(*´I`*)14 小时前
Android 测试入门指南:ADB 基础配置与常用设备管理命令解析
android·adb
ihuyigui16 小时前
海外酒店预订短信接口
android·java·运维·服务器·前端·后端·架构
gxgldyh16 小时前
Android Framework源码解析(七):BootAnimation 启动流程解析——开机动画是如何显示出来的?
android
达达尼昂17 小时前
在 Claude Cowork 中用好 Claude Fable 5
android·人工智能·后端