studio low example code ble android bluetooth bluetooth-lowenergy android-5.0-lollipop

example - bluetooth low energy android studio



Mal rendimiento de la funciĆ³n central Android Lollipop 5.0 Bluetooth Low Energy (3)

Desde la reciente versión de Android 5.0 Lollipop, estoy experimentando un rendimiento muy malo de la API de bajo consumo de Bluetooth en mi dispositivo Nexus 4. Con la versión anterior del sistema operativo (Android 4.4.4 Kit-Kat) funcionó a la perfección, y la misma aplicación ejecutada en 5.0 tiene el siguiente comportamiento:

  1. Con frecuencia no detecta ningún paquete publicitario desde el periférico.

    El ADVERTISING_INTERVAL del periférico es de 20 ms, por lo que la aplicación debe detectar al menos una publicidad en 60 ms en el peor de los casos. He intentado con BluetoothLeScanner (con la configuración de SCAN_MODE_LOW_LATENCY ) no usar el mBluetoothAdapter.startLeScan(mLeScanCallback) sin éxito.

  2. Cuando lo hace, cuando intento conectarme al servidor GATT, rara vez lo hace.

    He comprobado con un rastreador BLE que el paquete CONNECTION_REQUEST ni siquiera se envía al periférico.

Parece que no soy el único con este tipo de errores y algunos otros usuarios han publicado preguntas similares . ¿Alguien sabe lo que ha pasado?

-

Actualización 1: (12/12/2014)
También he probado la misma aplicación con un Nexus 5 que ejecuta Lollipop y rara vez se conecta al servidor GATT. Cada vez que envío una solicitud de conexión, nunca lo hace porque el periférico no recibe el paquete. Sin embargo, antes de actualizar este Nexus 5 a Lollipop, funcionó perfectamente en Kit-Kat 4.4.4.

Actualización 2: (2014/12/17)
Android 5.0.1 no resuelve el problema en absoluto.

Actualización 3: (2015/04/23)
Android 5.1 tampoco resuelve el problema. Hoy he tenido la oportunidad de probar Android 5.0.1 en un Samsung Galaxy S4 y funciona perfectamente. También he probado en el Nexus 5 con una nueva instalación de Android 5.1, y funciona bien también. El problema aún permanece en el Nexus 4. Hicieron algo extraño en el firmware de Android 5.0 y las versiones posteriores que rompieron la compatibilidad perfecta que tenía Android 4.4.4 con la API de Bluetooth.


Creo que puedo haber encontrado la respuesta

Tuve el mismo problema, me llevó de 2 a 5 minutos conectar mi dispositivo DESPUÉS de actualizar a Lollipop Esto tomó 5 segundos antes de la actualización.

La Corrección: Código antiguo:

mBluetoothGatt = mBluetoothDevice.connectGatt(this, true, mGattCallbackSync);

nuevo código :

mBluetoothGatt = mBluetoothDevice.connectGatt(this, false, mGattCallbackSync) ;

Acabo de cambiar el argumento autoConnect a falso. Se tarda 5 segundos en conectarse ahora.

Espero que esto funcione para ti.


Solo para actualizar: También estoy observando el mismo problema después de actualizar mi s5 a lollipop. En Kitkat funcionaba bien. Es realmente inaceptable tener tal comportamiento.

Tampoco puedo ver la solicitud de conexión que estoy realizando en los registros snoop y la API tampoco responde diciendo que hay algo mal con la solicitud de conexión o el periférico. Otro punto es que mi solicitud de conexión es siempre una solicitud de conexión automática, por lo que mi aplicación sigue esperando una devolución de llamada que nunca recibe llamadas. No quiero que mi código se ensucie y se complique implementando algunos temporizadores para verificar la conectividad.

¿Hay un error registrado al respecto en el repositorio de errores de google?


reeditado a una respuesta más clara

  • La semana pasada tuve algunos problemas con bt después de actualizar a 5.0. Quizás pueda detener el proceso bt desde las aplicaciones en la configuración y posiblemente se reinicie todo así:
    Configuración -> Aplicaciones -> Desplácese hasta Todo -> Seleccione Compartir Bluetooth -> Borrar caché.

  • Se ha sabido que cerrar estos servicios para crear una instancia de estos problemas resuelve este problema en algunos casos. También puedes seguir este enlace si está más claro:

    http://www.gottabemobile.com/2014/12/01/nexus-lollipop-problems-fixes/

  • En mi caso, no soy experto en Bluetooth, pero resolví estos problemas después de muchos intentos. Y descubrí que quitar la copia del bt dongle de la ayuda de la PC también.

  • En general, no se recomienda actualizar tan pronto sin verificar la competencia de bluetooth. Por lo que he entendido, se sabe que bt tiene problemas en cada actualización

Buena suerte con su esfuerzo. Si esta respuesta no es suficiente, espero que encuentre ayuda de alguien más.