2012-03-07 7 views
29

Celem projektu jest użycie mojego telefonu z Androidem do połączenia z moimi urządzeniami arduino. ale jak mogę sparować te sparowane? Widzę, że wygląda na to, że sparowana lista jest przechowywana tam, gdzie w dowolnym momencie mógłby zostać pobrany moduł Bluetooth.Jak sparować lub usunąć sparowane urządzenie bluetooth programowo na Androidzie?

PS: Po pierwsze, wiem, że długie naciśnięcie sparowanego urządzenia spowoduje sparowanie go.
ale tutaj pytanie brzmi: jak mogę to zrobić programowo?

Po drugie, sprawdziłem klasę bluetoothdevice i bluetoothAdapter, nie ma funkcji do jej realizacji.

dzięki.

+0

Spróbuj tego: [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 , jakiekolwiek inne rozwiązania w tej sprawie? – antonio081014

Odpowiedz

52

Ten kod działa dla mnie.

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

Czy działa na JB? o.O – Ewoks

+0

@Ewoks, nie wiesz co masz na myśli –

+0

Czy to działa na Jelly Bean (aka 4.1.x)? Bo jestem całkiem pewna, że ​​dodają nowy stos bluetooth i metoda createBond już nie istnieje. – Ewoks

1

w klasie BluetoothService istnieje metoda removebond() dla parowania, sparowania urządzeń. Na koniec ta metoda wywołuje rmovebondnative().

+0

Spróbuję. dzięki. –

+0

Czy jest to api wystawiane publicznie? –

-4

Jeśli chcesz usunąć parę urządzenia bluetooth, najpierw musisz sparować całe urządzenie, a następnie kliknąć opcję serch, aby znaleźć wszystkie urządzenia usunięte z listy.

8

rozłączyć wszystkich urządzeń:

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

Czy nie ** removeBond() ** ma być publiczną metodą BluetoothDevice? http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/bluetooth/BluetoothDevice.java –

+1

Nie, jest oznaczony adnotacją '@ hide', co powoduje, że nie jest ona publicznie dostępna. – Christopher