¿Cómo mejorar el rendimiento de GATT de baja energía de Bluetooth de Android?

Tengo problemas de rendimiento cuando hago varias lecturas consecutivas del GATT usando la API BLE de Android.

Puedo leer alrededor de 10 paquetes por segundo sólo por unos 5 o 6 segundos. Después de leer el paquete de los ~ 65 el caudal disminuye a aproximadamente 1 paquete cada 1.5 segundos.

Hice varias pruebas y parece que el BLE interno se está poniendo muy lento. En ese caso, se tarda unos 750 ms de la llamada de lectura Java GATT a la periférica (no hay ningún cuello de botella en el periférico) y aproximadamente el mismo, 750ms, de vuelta a la devolución de llamada de la API de Java.

Me parece que la implementación de la pila BLE pobres, porque cuando me desconecto del dispositivo (probablemente algunos recursos se limpian) y luego volver a conectar de nuevo puedo reproducir el mismo problema: Lee unos 10 paquetes / s para los primeros 5 o 6 Segundos (~ 65 paquetes lee) solamente, entonces se vuelve lento.

Lo probé con dispositivos Galaxy S4 y Nexus 4. Lo mismo con ambos.

¿Alguna sugerencia sobre cómo mejorarlo?

Espero que desde el 5 de junio de 2014, encuentre una solución a su problema. También tengo el mismo problema. Los primeros 2 ~ 3 segundos, recibo datos en ~ 100ms. Después, recibo datos cada ~ 2000ms. Pruebo en el dispositivo 4.3 y superior.

Encontré para la versión de Lollipop y sobre el requestConnectionPriority en BluetoothGatt. No he encontrado la solución para la versión 4. *. Si alguien tiene sugerencia.

Espero que esto ayude a alguien con problemas de bluetooth en la transferencia de datos!

  • Cómo cambiar el tamaño de la imagen gif en android
  • ¿Cómo agregar datos iniciales a la base de datos SQLite?
  • Arrastrar y soltar iconos a la pantalla de inicio
  • Combinar dos archivos .m4a o convertir archivos .wav a m4a
  • ORMLite para Android no autorefresh objeto extranjero utilizando foreignAutoRefresh
  • Espere hasta que se complete la tarea
  • Error al sincronizar el archivo - Android studio (app: mergeDebugResources)
  • Excepción en el subproceso "main" java.lang.NoClassDefFoundError: junit / textui / ResultPrinter
  • Cómo convertir HashMap a json Array en android?
  • No se puede resolver el método 'show (android.support.v4.app.FragmentManager, java.lang.String)
  • Cómo agregar la dependencia de compilación a la ruta de clase javadoc en gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.