我正在开发一个 Android BLE 应用程序,用于连接 BLE 外围设备。 BLE外围设备具有很强的能量约束,因此建立连接时应保持较高的连接间隔。
为了增加连接间隔,我正在打电话
requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_LOW_POWER)
在回调
onConnectionStateChange
中,一旦连接建立。然后连接间隔更改为预期的 96 毫秒。但是,我观察到,在建立连接时,在调用回调之前,连接间隔在 300 毫秒内要短得多。
D connect() - device: D1:79:4F:0F:F2:D0, auto: false, eattSupport: false
D registerApp()
D registerApp() - UUID=d02dd9c1-6ca6-4d9f-9037-ec41fc4ea29c
D onClientRegistered() - status=0 clientIf=9
D isLeEnabled(): ON
D onClientConnectionState() - status=0 clientIf=9 device=D1:79:4F:0F:F2:D0
D requestConnectionPriority() - params: 2
D onConfigureMTU() - Device=D1:79:4F:0F:F2:D0 mtu=247 status=0
D onConnectionUpdated() - Device=D1:79:4F:0F:F2:D0 interval=6 latency=0 timeout=500 status=0
D onConnectionUpdated() - Device=D1:79:4F:0F:F2:D0 interval=96 latency=2 timeout=500 status=0
我也尝试过在拨打
requestConnectionPriority
后立即拨打connectGatt
以尽早更改连接间隔。这没有效果。使用 Sony Xperia 1 III 进行测试,代码来自 https://github.com/android/platform-samples/tree/main/samples/connectivity/bluetooth/ble。
有没有办法从建立BLE连接的一开始就控制连接间隔?
在 Android 上,没有用于更改默认连接间隔参数的 API。如果您可以控制外设代码,则可以根据需要设置外设上的默认连接参数。这样,当Android设备与外围设备建立连接时,连接参数将在连接间隔协商过程中发生变化。正如您所说,您的第二个最佳选择是在
requestConnectionPriority
或 connectGatt
之后立即调用 onConnectionStateChange
。请查看下面的链接以获取更多信息:-