最近由于公司项目,正在研究在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),所以这一块的逻辑我还在考虑应该怎么做。


更多相关文章

  1. Android使用http协议与服务器通信
  2. Garmin-ASUS将在2010年一季度发布Android设备
  3. 关于android设备管理器的一些分析
  4. 解决Android Studio连不上Android设备真机的问题
  5. android 获取 内外存储设备路径疑问
  6. 《ionic学习笔记》:设置tabs位于android设备底部
  7. android sip协议通话实现
  8. 如何修改Android设备添加重启、飞行模式、静音模式等功能(二)

随机推荐

  1. HTML表格实战:制作商品信息表格
  2. 简述事件委托(事件代理)
  3. 请简述 DOM 事件模型或 DOM 事件机制
  4. HTML表格标签及合并行列使用
  5. 注册表单练习
  6. 前端作业-表单
  7. 第二天 HTML标签与属性
  8. 我们常说的算法时间复杂度和空间复杂度到
  9. 手机商品信息表
  10. 表格信息练习