2012-03-07 19 views
29

El proyecto es usar mi teléfono Android para conectarme con mis dispositivos Arduino. pero ¿cómo puedo desvincular los pares? Veo que parece que la lista de pares está almacenada donde bluetoothadapter podría recuperar en cualquier momento.¿Cómo desvincular o eliminar el dispositivo bluetooth vinculado programáticamente en android?

PD: En primer lugar, sé que el dispositivo emparejado de pulsación larga lo desvinculará.
pero la pregunta aquí es ¿cómo puedo hacer que esto ocurra programáticamente?

2º, he comprobado el dispositivo bluetooth y la clase bluetoothAdapter, no hay ninguna función para implementar esto.

gracias.

+0

Prueba esto: [http://stackoverflow.com/questions/3462968/how-to-unpair-bluetooth-device-using-android-2-1 -SDK] [1] [1]: http://stackoverflow.com/questions/3462968/how-to-unpair-bluetooth-device-using-android-2-1-sdk – broody

+0

@broody ¿Alguna otra solución sobre esto? – antonio081014

Respuesta

52

Este código funciona para mí.

private void pairDevice(BluetoothDevice device) { 
    try { 
     if (D) 
      Log.d(TAG, "Start Pairing..."); 

     waitingForBonding = true; 

     Method m = device.getClass() 
      .getMethod("createBond", (Class[]) null); 
     m.invoke(device, (Object[]) null); 

     if (D) 
      Log.d(TAG, "Pairing finished."); 
    } catch (Exception e) { 
     Log.e(TAG, e.getMessage()); 
    } 
} 

private void unpairDevice(BluetoothDevice device) { 
    try { 
     Method m = device.getClass() 
      .getMethod("removeBond", (Class[]) null); 
     m.invoke(device, (Object[]) null); 
    } catch (Exception e) { 
     Log.e(TAG, e.getMessage()); 
    } 
} 
+0

¿Funciona en JB? o.O – Ewoks

+0

@Ewoks, no estoy seguro de lo que quiere decir –

+0

¿Funciona esto en Jelly Bean (también conocido como 4.1.x)? Porque estoy bastante seguro de que agregan nueva pila de bluetooth y el método createBond se ha ido. – Ewoks

1

en la clase BluetoothService hay un método removebond() para desvincular, dispositivos vinculados. Finalmente este método llama rmovebondnative().

+0

Lo intentaré. Gracias. –

+0

¿Es una API pública? –

-4

Si desea eliminar el par de dispositivos bluetooth, primero debe desvincular todo el dispositivo y luego hacer clic en la opción de serch encontrará que todo el dispositivo se ha eliminado de la lista.

8

desvincular todos los dispositivos:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
     if (pairedDevices.size() > 0) { 
      for (BluetoothDevice device : pairedDevices) { 
       try { 
        Method m = device.getClass() 
          .getMethod("removeBond", (Class[]) null); 
        m.invoke(device, (Object[]) null); 
       } catch (Exception e) { 
        Log.e("Removing has been failed.", e.getMessage()); 
       } 
      } 
     } 
+0

¿No se supone que ** removeBond() ** es un método público en BluetoothDevice? http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/bluetooth/BluetoothDevice.java –

+1

No, está marcado con la anotación '@ hide', lo que hace que no esté disponible para el público. – Christopher

Cuestiones relacionadas