我有一个蓝牙隐藏设备,我需要与之通信。目标平台是Android 5.x +。目前正在使用Nexus 7 2013平板电脑进行测试。
我的代码在android 5.x上工作正常,我可以在Android 5.x上接收,发送和设置报告。
在Android 6.x上,我只能接收设备发送的报告,但我无法发送或设置报告。看起来我的设置/发送报告请求被HID / BT堆栈默默忽略。
与/ dev / hidraw *节点对话的代码以root身份作为本机守护程序运行。
是否有任何新要求可以在Android 6.x上设置/发送报告到蓝牙隐藏设备?我可以对AOSP做出任何改变以使其发挥作用吗?
[更新] Logcat说:
05-17 11:22:56.085 2455-4061/com.android.bluetooth E/bt_btif: uhid_event: Invalid size read from uhid-dev: 4108 != 4
我不明白如何从uhid读取只返回4个字节!前4个字节应该只包含事件的type
。是否有任何情况会导致read()
小于sizeof(struct uhid_event)
个字节?
这是否表明uhid驱动程序存在错误?
答案 0 :(得分:1)
我检查了可用的内核源代码,发现hidraw驱动程序不包含可用于将报告提供给/ dev / hidraw *节点的源代码
我还发现Bluedroid在内部正确接收和发送报告。
获取/设置/发送报告的最简单方法我发现是修改bluedroid直接与我的App进行通信,以获取特定于供应商的报告。我直接将我的守护进程整合到Bluedroid中。