小编ver*_*ith的帖子

Android 6.0 Marshmallow BLE:连接参数

在Android 6中,蓝牙低功耗连接参数管理似乎已经发生了变化.

我有一个BLE外围设备需要使用一些特定的连接参数(特别是连接间隔),我想使用BLE规范允许的最小连接间隔(即7,5ms).

Android SDK不允许从BLE GAP Central(智能手机)端选择它,因此正确的方法是让我的GAP外围设备L2CAP Connection Parameter Update Request在建立GAP连接后发送.

我要求的参数是:

  • conn interval min:7,5ms
  • conn interval max:7,5ms
  • 奴隶潜伏期:0
  • 监督超时:2000ms

这与我一直在测试的所有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(我保持其他参数相同).这是我发现的:

  • 如果conn interval max = 18.75ms,则接受更新请求,间隔设置为18.75ms
  • 如果conn interval max = 17.50ms,则接受更新请求,间隔设置为15.00ms
  • 如果conn …

android bluetooth bluetooth-lowenergy android-bluetooth android-6.0-marshmallow

32
推荐指数
2
解决办法
2万
查看次数