Android上实现Bluetooth HID device的研究(一)
16lz
2021-01-23
最近由于公司项目,正在研究在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),所以这一块的逻辑我还在考虑应该怎么做。
更多相关文章
- Android使用http协议与服务器通信
- Garmin-ASUS将在2010年一季度发布Android设备
- 关于android设备管理器的一些分析
- 解决Android Studio连不上Android设备真机的问题
- android 获取 内外存储设备路径疑问
- 《ionic学习笔记》:设置tabs位于android设备底部
- android sip协议通话实现
- 如何修改Android设备添加重启、飞行模式、静音模式等功能(二)