Android ble,requestConnectionPriority不起作用

我试图发送10个字节的数据,每30miliseconds之间使用蓝牙低enegry通知的2个Android设备之间。目标是实现低延迟通信,并且对低能量没有兴趣。Android ble,requestConnectionPriority不起作用

您可以在Delay graph(Y field = delta time between packets)中查看结果。前10秒的沟通正在进行得足够好。 (数据包之间的间隔最大为30-40ms)。然而,在10秒后,间隔要么极高,要么极低。

这可能是由于非严格的连接间隔参数而发生的。您可以检查一个hci_events的样本,清楚地显示减速是由hci_events引起的。

我试图配置连接的参数,从主调用函数

requestConnectionPriority 

但是,它并没有改变结果图什么。我还使用wireshark检查数据包,并发现主站甚至没有发送配置连接间隔的请求。我也尝试了另一个配置请求

requestMtu 

具有完全相同的结果,没有更新数据包从主站发送。

所以,有两个问题显示出这个意见。

  • 为了确保低能耗,在第10秒钟有一个超时时间?如果是这样,我该如何禁用它?
  • 调用requestConnectionPriority有什么不对吗,从android 6.0.1起中央(master)的角色?你能给我一个关于如何正确调用的简单例子吗?

注意requestConnectionPriority被称为之后的连接是建立在BluetoothGattCallbackonConnectionStateChange

具有从机(服务器)角色的设备正在运行(Android 5.1.1)并且主机(客户机)正在运行(Android 6.0.1)。

非常感谢!

重要更新:这是至关重要提的连接正在发起设备之间的方式。

  • 中央设备调用device.connectGatt,其中设备是BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address)。地址是硬编码字符串,外围设备的公共mac地址。您可以检查logcat logs和hci logs。
  • 我也曾尝试用合法的方式(周边广告并连接到扫描随机地址)连接,但我得到一个错误“发起直接连接失败,拓扑限制”。你可以检查logcat logs和hci logs。

回答:

为了确保低能耗,在第10秒有一个超时时间吗?如果是这样,我该如何禁用它?

没有

是有些事情错了电话requestConnectionPriority,从中央(主)的作用了Android 6.0.1?你能给我一个关于如何正确调用的简单例子吗?

我不知道有关requestConnectionPriority的任何错误。但是你可以尝试在onServicesDiscovered回调之后执行该方法。在GATT服务发现期间,Android暂时将连接间隔更改为7.5毫秒,因此如果您不等到服务发现完成,则可能会感到困惑。

关于requestMtu,请确保在没有其他GATT操作挂起的情况下执行该方法(否则它将不起作用)。

另外一个技巧是使用空气嗅探器,而不仅仅是看hci日志。

以上是 Android ble,requestConnectionPriority不起作用 的全部内容, 来源链接: utcz.com/qa/257201.html

回到顶部