android M+ 可以拥有的最大并发 Ble 连接数是多少
What is the max concurrent Ble connections android M+ can have
我的应用程序需要同时连接 9 个 Ble 设备。
在此 article 和任何其他资源中,它写道 android 4.4+ 只能连接到 7 个设备。
M或N版本有什么新东西吗?
谢谢。
连接数受常量 MAX_L2CAP_LINKS 和 GATT_MAX_PHY_CHANNEL 限制,目前(仍)设置为 7。
如果您尝试使用 autoConnect = true 连接第 8 个设备,由于 Android M 中引入的错误,堆栈将挂起并且无法再次连接,直到您重新启动蓝牙。如果您使用 autoConnect = false要连接第 8 台设备,您将立即收到带有 newState = disconnected 的 onConnectionStateChange 回调,并且不会尝试连接。
我不知道为什么这些常量这么低。往往硬件本身可以做7个以上,比如Nexus 6P自己编译AOSP,改常量可以做15个
Samsung 似乎已经注意到了这个问题并增加了他们一些设备上的常量。例如,三星 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 设备来了解它在实践中的工作原理......至少在撰写此回复时) .
我的应用程序需要同时连接 9 个 Ble 设备。 在此 article 和任何其他资源中,它写道 android 4.4+ 只能连接到 7 个设备。 M或N版本有什么新东西吗? 谢谢。
连接数受常量 MAX_L2CAP_LINKS 和 GATT_MAX_PHY_CHANNEL 限制,目前(仍)设置为 7。
如果您尝试使用 autoConnect = true 连接第 8 个设备,由于 Android M 中引入的错误,堆栈将挂起并且无法再次连接,直到您重新启动蓝牙。如果您使用 autoConnect = false要连接第 8 台设备,您将立即收到带有 newState = disconnected 的 onConnectionStateChange 回调,并且不会尝试连接。
我不知道为什么这些常量这么低。往往硬件本身可以做7个以上,比如Nexus 6P自己编译AOSP,改常量可以做15个
Samsung 似乎已经注意到了这个问题并增加了他们一些设备上的常量。例如,三星 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 设备来了解它在实践中的工作原理......至少在撰写此回复时) .