Android: Límite de conexiones BLE simultáneas
estamos desarrollando una aplicación para Android que puede conectarse a múltiples sensores de frecuencia cardíaca simultáneamente vía Bluetooth Low Energy.
Tenemos una implementación que está funcionando bastante bien, por lo que el código no es el problema. Lo que nos vuelve locos es la limitación de las conexiones BLE paralelas que parece ser diferente de un dispositivo a otro.
- Cómo borrar mediante programación la caché Bluetooth utilizando GattServer
- ¿Es posible conectar iOS y dispositivos Android con Bluetooth?
- Lea las notificaciones cuando toque el botón en el dispositivo BLE
- Escanear el módulo ble (bluetooth 4.0) en el android studio
- Notificaciones de proximidad BLE de Android
Tenemos algunos dispositivos de prueba aquí: Motorola MotoE y MotoG, un Samsung Galaxy Tab A y un HTC Nexus 9. Todos ellos están ejecutando Android 5 o 6, las versiones del vendedor original. Ninguno de ellos es capaz de conectarse a más de 7 sensores BLE HR simultáneamente.
Entonces he probado con mi Samsung Galaxy S4 privado, que tiene sus raíces y tiene Cyanogen CM12 instalado. Con este dispositivo puedo conectar fácilmente a 12 sensores de HR simultáneamente que es el número que queremos alcanzar con nuestra aplicación.
He probado esto tanto con nuestra propia aplicación de aplicación y con el nórdico Semiconductor nRF Master Panel de control que creo que es una muy buena aplicación genérica BLE: https://play.google.com/store/apps/details?id=no. nordicsemi.android.mcp & hl = de
Cuando intento conectar la aplicación a un séptimo sensor BLE en cualquiera de nuestros dispositivos, la salida de ADB imprime el mensaje de error siguiente: E / BluetoothLeBasicConn: Error de cambio de estado de conexión: 133
Hice algunos bastante googling sobre todo ese problema, pero la mayoría de los resultados que he encontrado eran bastante antiguos. Algunas personas dijeron, que la limitación provenía del Chipset Bluetooth en sí, otros dijeron que era una limitación de software a través de Android.
¿Podría ayudarme a averiguar, de dónde viene la limitación?
Si es el chipset, entonces me gustaría saber qué dispositivos debemos usar para soportar tantas conexiones paralelas como sea posible. Lamentablemente es muy difícil averiguar qué chipset Bluetooth se construye en los diferentes dispositivos. Casi ninguna de las especificaciones de hardware que encontré decir nada sobre esto.
Si la limitación viene del lado del software, podemos cambiarlo de alguna manera sin necesidad de enrutar teléfonos o instalar modded OS?
¡Muchas gracias!
- Soporte Bluetooth Smart (4.0) / GATT en Android 4.0?
- Bluetooth GATT onConnectionState El cambio no funciona en Lollipop
- Android Bluetooth LE - Leer las características que no funcionan en Samsung
- Cifrado de baja energía de Bluetooth y seguridad de datos
- Android BLE: onCharacteristicChanged nunca se dispara
- BLE de Android que envía el comando escribiendo las características que no responden
- Desactivación del periférico que provoca un comportamiento inesperado
- ¿Es posible conectar el dispositivo Android Wear con otro dispositivo BLE directamente sin interacción del dispositivo telefónico?
En caso de que usted todavía está interesado en ella. El límite viene de BTA_GATTC_CONN_MAX (hardcoded en android) Que se establece en:
- 4 en Android 4.3 y
- 7 en Android 4.4
Hay por cierto también un límite en la cantidad de características para las cuales usted puede activar notificaciones. (BTA_GATTC_NOTIF_REG_MAX) que es:
- 4 en Android 4.3,
- 7 en Android 4.4 y
- 15 en Android 5.0
- Variable de ajuste dentro de onDataChange en Firebase (singleValue Listener)
- No se puede depurar la aplicación en Android Phone