在Android 6中,蓝牙低功耗连接参数管理似乎已经发生了变化.
我有一个BLE外围设备需要使用一些特定的连接参数(特别是连接间隔),我想使用BLE规范允许的最小连接间隔(即7,5ms).
Android SDK不允许从BLE GAP Central(智能手机)端选择它,因此正确的方法是让我的GAP外围设备L2CAP Connection Parameter Update Request在建立GAP连接后发送.
我要求的参数是:
这与我一直在测试的所有Android设备一样工作,从4.3到5.x:发送后L2CAP Connection Parameter Update Request,我的设备收到一个L2CAP Connection Parameter Update Response0x0000(接受),然后LE Connection Update Complete event我可以看到所请求的连接参数已经很好了考虑到了.
现在,使用Nexus 9平板电脑或2个不同的Nexus 5设备,都拥有Android 6.0.1,我可以看到它L2CAP Connection Parameter Update Request总是被拒绝(我收到的是L2CAP Connection Parameter Update Response0x0001(拒绝)).然后我收到一个LE Connection Update Complete event我可以看到所请求的连接参数未被考虑的地方.
我一直在尝试使用外设方面的两种不同的实现(一种是使用ST Microelectronics的BlueNRG,一种是使用Nordic Semiconductor的nRF52),两者的结果完全相同.
然后,经过更多的测试:我尝试了不同的参数集,更改了conn interval max(我保持其他参数相同).这是我发现的:
android bluetooth bluetooth-lowenergy android-bluetooth android-6.0-marshmallow