Mao*_*dad 4 bluetooth-lowenergy android-ble
我的应用程序需要同时连接9个Ble设备.在本文和任何其他资源中,它写的android 4.4+只能连接到7个设备.M或N版本有什么新东西吗?谢谢.
连接数受限于当前(仍)设置为7的常量MAX_L2CAP_LINKS和GATT_MAX_PHY_CHANNEL.
如果您尝试使用autoConnect = true连接第8个设备,则由于Android M中引入的错误,堆栈将挂起并再次无法连接,直到您重新启动蓝牙.如果使用autoConnect = false连接第8个设备,您将立即获得一个onConnectionStateChange回调,newState = disconnected,不会尝试连接.
我不知道为什么这些常数如此之低.硬件本身通常可以执行7次以上操作.例如,如果您自己编译AOSP并更改常量,Nexus 6P可以执行15次操作.
三星似乎已经注意到了这个问题,并增加了一些设备的常量.例如,三星Galaxy Tab A 10.1无需修改即可处理15个BLE连接.
看来这些常量是全局限制,而不是每个应用程序。我正在链接到 Android 中 BT 堆栈的源代码。我想知道为什么这些常数是这样的......看起来是随机的。
#define GATT_MAX_PHY_CHANNEL 7
#define BTA_GATTC_CONN_MAX GATT_MAX_PHY_CHANNEL
tBTA_GATTC_CONN conn_track[BTA_GATTC_CONN_MAX];
笔记
这是Android官方代码。在 Android 7.2 之前,供应商经常对该实现进行大量更改。Android 8 及更高版本的理论是供应商不应对其进行修改(现场没有足够的 Android 8 设备来了解其在实践中的工作原理......至少在撰写此回复时是这样)。
| 归档时间: |
|
| 查看次数: |
3049 次 |
| 最近记录: |