2012-05-29 11 views
6

Me di cuenta de que cuando un dispositivo Bluetooth emparejado cambia de nombre, mi dispositivo Android no siempre registra ese cambio de nombre. Continúa mostrando el nombre anterior del dispositivo ... Esto no es un problema para los dispositivos no emparejados, así que mi conjetura natural es que Android almacena en caché los nombres de los dispositivos emparejados en alguna parte.Cómo borrar programáticamente el caché del nombre de Bluetooth en Android?

Después de mirar alrededor, encontré que si desinstalaba el dispositivo y borraba manualmente el caché almacenado en la aplicación "Compartir Bluetooth" de Android, este problema desaparece. Por supuesto, el problema probablemente vuelva después de emparejar el dispositivo nuevamente con mi Android.

TL; DR ¿Cómo forzo a Android a mostrar siempre el último nombre de un dispositivo Bluetooth?

Escuché algo sobre el método "fetchUuidsWithSdp", pero no estoy seguro de cómo usarlo.

Respuesta

6

Sí, fetchUuidsWithSdp() es una buena idea porque, a diferencia de getUuids(), obliga al dispositivo a intentar conectarse al dispositivo de destino y actualizar su información al respecto.

El soporte oficial para fetchUuidsWithSdp acaba de agregarse en la versión 4.0.3, pero estaba disponible antes de eso mediante la reflexión.

public static void startFetch(BluetoothDevice device) { 
    // Need to use reflection prior to API 15 
    Class cl = null; 
    try { 
     cl = Class.forName("android.bluetooth.BluetoothDevice"); 
    } catch(ClassNotFoundException exc) { 
     Log.e(CTAG, "android.bluetooth.BluetoothDevice not found."); 
    } 
    if (null != cl) { 
     Class[] param = {}; 
     Method method = null; 
     try { 
      method = cl.getMethod("fetchUuidsWithSdp", param); 
     } catch(NoSuchMethodException exc) { 
      Log.e(CTAG, "fetchUuidsWithSdp not found."); 
     } 
     if (null != method) { 
      Object[] args = {}; 
      try { 
       method.invoke(device, args); 
      } catch (Exception exc) { 
       Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method."); 
      }    
     } 
    } 
} 

uno normalmente luego registrarse para android.bluetooth.device.action.UUID, pero es posible que desee registrarse para el cambio de nombre en lugar de acción.

Tenga en cuenta que, si decide registrarse para la acción de UUID, se escribió incorrectamente antes de API 15 como "android.bleutooth.device.action estadounidenseID" (se intercambian ey u en bluetooth).

+0

Muchas Gracias – user1408996

+0

este método desbloqueó mi bluetooth, así que podría enviar datos. anteriormente, el dispositivo BT no respondía. después de aplicar este código, eliminé la asociación y luego la reinicié. tengo un adaptador de impresora bluetooth (chino) y una impresora de puntos Epson LX 300 + II. Enumero las facturas. así que MUCHAS GRACIAS !!! – mihai71

0

para recordar el último dispositivo que conecto siempre puedo guardar la dirección MAC en un archivo

Cuestiones relacionadas