¿No se ha enviado la solicitud de desconexión de Bluetooth Low Energy de Android?

Estamos intentando desconectar de un periférico, pero usando un sniffer de Bluetooth, no estamos viendo un LL_TERMINATE_IND paquete. En su lugar, el teléfono parece seguir enviando Empty PDU al periférico durante otros 20 segundos.

Estamos utilizando el siguiente plugin Cordova BLE: https://github.com/don/cordova-plugin-ble-central

El método de desconexión está aquí: https://github.com/don/cordova-plugin-ble-central#/L74

También hemos intentado agregar un gatt.disconnect() explícito antes de gatt.close() como abajo, pero parecía no hacer ninguna diferencia:

 public void disconnect() { connectCallback = null; connected = false; if (gatt != null) { gatt.disconnect(); gatt.close(); gatt = null; } } 

Aquí está el registro de adb relevante. Hay un error en el registro de anuncios "Contexto no encontrado" que podría estar relacionado? Aunque eso parece ser justo después de onDisconnected ().

 04-15 16:25:34.931 24199 24199 I chromium: [INFO:CONSOLE(79263)] "ble:store > Handle dispatch DOOR_DISCONNECT", source: file:///android_asset/www/js/bundle.js (79263) 04-15 16:25:34.931 24199 24199 I chromium: [INFO:CONSOLE(79263)] "ble:connecting > § 20", source: file:///android_asset/www/js/bundle.js (79263) 04-15 16:25:34.932 24199 24274 D BluetoothGatt: close() 04-15 16:25:34.932 24199 24274 D BluetoothGatt: unregisterApp() - mClientIf=5 04-15 16:25:34.933 1886 9721 D BtGatt.GattService: unregisterClient() - clientIf=5 04-15 16:25:34.934 1886 2019 W bt_btif : bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016 04-15 16:25:34.934 1886 2019 W bt_btif : bta_gattc_conn_cback() - cif=4 connected=0 conn_id=4 reason=0x0016 04-15 16:25:34.934 1886 2019 W bt_btif : bta_gattc_conn_cback() - cif=5 connected=0 conn_id=5 reason=0x0016 04-15 16:25:34.944 1886 1924 D BtGatt.GattService: onDisconnected() - clientIf=5, connId=5, address=00:A0:00:00:00:14 04-15 16:25:34.944 1886 1924 E BtGatt.ContextMap: Context not found for ID 5 04-15 16:25:34.948 24199 24199 I chromium: [INFO:CONSOLE(79270)] "ble:connecting > _disconnectFromDoor success", source: file:///android_asset/www/js/bundle.js (79270) 04-15 16:25:34.952 24199 24199 I chromium: [INFO:CONSOLE(79263)] "ble:store > Handle dispatch DOOR_DISCONNECT_SUCCESS", source: file:///android_asset/www/js/bundle.js (79263) 

Y aquí es lo que el bluetooth sniffing parece (con mucho más de lo mismo):

Salida de sniffer Bluetooth en Wireshark

Existe la posibilidad de que el periférico se haya ido a dormir en este punto (lo hace para propósitos de duración de la batería). Eso sería un poco de sentido para mí por qué el teléfono sólo sigue enviando Empty PDU , pero no debemos todavía ver la solicitud de desconexión en las ondas de radio?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.