Android上实现Bluetooth HID device的研究(一)
16lz
2022-03-26
最近由于公司项目,正在研究在Android上实现HID device,也就是把Android设备模拟成为蓝牙输入设备。
标准的Bluetooth HID应该是工作在L2CAP上的,Android4.2以下和以上使用的协议栈不一样,一个是来自Broadcom的Bluedroid,一个是Bluez,都没有内含HID device的实现。
考虑在Android的应用层建立L2CAP的链接,在上面做HID,也许可以不必受到协议栈不一样的困扰,尽管可以通过Java的反射将L2CAP socket创建,但问题也存在:
1,Bluedroid协议栈里,禁止了L2CAP和SCO socket的连接和监听,如果一定要做,那就一定要改协议栈
2,ServiceRecord的注册,Android没有提供接口可以注册L2CAP链路上的ServiceRecord,只有RFCOMM的可以,这样一来意味着要从上到下去修改。
第二种思路是在协议栈内修改、增加HID device服务,
目前先研究的是Bluez协议栈,注册ServiceRecord可以成功,遇到的问题是:
收到传入的连接的时候,会自动进入HID server的传入连接流程中,不能正常建立连接。由于HID host端是不会注册HID的UUID的,所以没有机会probe device driver(hid),所以这一块的逻辑我还在考虑应该怎么做。
更多相关文章
- ADB连接Android设备的三种方法
- 坑中速记整理! 使用 kotlin 写第一个 ReactNative Android(安卓)
- Android使用http协议与服务器通信
- [置顶] Android(安卓)实现对话框圆角功能
- Android(安卓)手机上安装并运行 Ubuntu 12.04
- 百度地图android sdk拖拽overlay item
- Android上鲜为人知的UI控件介绍和使用
- Android开发者应该深入学习的10个开源应用项目
- Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azur