Cómo borrar mediante programación la caché Bluetooth utilizando GattServer

Estoy un poco familiarizado con BLE y estoy enfrentando algún problema con un código heredado. Así que la aplicación funciona así:

  1. Con BLE activado, la aplicación explora los dispositivos
  2. La aplicación muestra los dispositivos encontrados
  3. El usuario selecciona el dispositivo para
  4. La aplicación se sincroniza con el dispositivo

El problema que enfrento es que después de emparejar varias veces (varía) el teléfono no es capaz de descubrir los dispositivos, por lo tanto, el bloqueo del usuario para emparejar.

Estoy usando GattServer para conectarme con el dispositivo cliente, y estoy reseting los servicios como a continuación:

public void resetBluetoothGattServer() { Log.i(TAG," resetBluetoothGattServer: bluetoothGattServer: "+ bluetoothGattServer); if (bluetoothGattServer != null) { if(!bluetoothGattServer.getServices().isEmpty()){ Log.i(TAG," resetBluetoothGattServer: clearing services on bluetooth Gatt Server"); bluetoothGattServer.clearServices(); } Log.i(TAG," resetBluetoothGattServer: closing bluetoothGattServer"); bluetoothGattServer.close(); } bluetoothGattServer = openGattServer(); } 

Reiniciar el teléfono, desactivar el bluetooth y volver a activarlo, y desinstalar e instalar la aplicación no solucionará el problema. La única solución es borrar la caché de la aplicación Compartir Bluetooth en el administrador de aplicaciones de Android.

Este post Cómo forzar programaticamente el descubrimiento de servicios de baja energía de bluetooth en Android sin usar las direcciones de caché para un problema similar, pero como no estamos usando BluetoothGatt para conectar no es una solución adecuada. Tampoco se refactorizará todo el código heredado.

Le pregunto si hay una manera de limpiar la memoria caché programmatically usando BluetoothGattServer.

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