开发一款Android APP,实现把Android手机作为HID设备,发送广播,等待主机端连接,连接成功后通过蓝牙HID服务通信。
目前尝试了两种方法:
第一种:
使用 BluetoothManager.openGattServer(MainActivity.this, mGattServerCallback)获取系统的蓝牙Gatt服务,然后配置一个UUID是“"00001812-0000-1000-8000-00805f9b34fb"”的BluetoothGattService,把这个Server添加到GattServer中。这样用nRF扫描连接后,能看到HID服务和特征,但是没法通信(用普通的UUID配置Service可以通信,但是用HID的UUID配置Service和特征就没法通信,咱也不知道为啥。。)
配置service如下图:
图1:
图2:
第二种方法:
使用bluetoothAdapter.getProfileProxy获取系统蓝牙配置代理,然后通过BluetoothHIDDevice这个类的接口registerApp把Android设备注册成HID设备。看回调里面返回的是true,应该是注册HID设备成功了?然后用另一台手机作为主机和我这个APP从机配对连接,连接上有外设(手柄的图标,但是我设置的是mouse啊)。然后用nRF连上之后发现这个设备下面没有HID的服务?
注册HID设备如下图:
图3:
图4:
醉了呀~研究几天没整明白要咋让设备通过HID服务和主机进行通信,有没有熟悉Android 蓝牙开发的朋友指导一下