2014-09-11 23 views
8

Mogę wymienić wymienione urządzenia Bluetooth i muszę sprawdzić ich bieżący stan połączenia podczas uruchamiania aplikacji.Jak programowo sprawdzić stan połączenia urządzenia Bluetooth w systemie Android?

Ale nie znalazłem sposobu na uzyskanie stanu połączenia?!

Oto niektóre wysiłki próbowałem, ale nie powiodło się:

  1. android.bluetooth.BluetoothDevice

Ma metodę, aby uzyskać stan obligacji zdalnego urządzenia i możliwe wartości stan wiązania to: BOND_NONE, BOND_BONDING, BOND_BONDED. Ale to nie jest stan połączenia.

  1. android.bluetooth.BluetoothProfile

Metoda może być stosowana, aby uzyskać stan połączenia, ale obiekt BluetoothProfile muszą być uzyskane w pierwszej kolejności.

public abstract int getConnectionState (BluetoothDevice device); 

Jak opisano w dokumencie: "Klienci powinni zadzwonić getProfileProxy (Context, BluetoothProfile.ServiceListener, int), aby uzyskać Proxy Profil.", Może tylko być odzyskać w ServiceListener wywoływana, gdy zmienia się stan.

Co się stanie, jeśli zapytam o stan przy uruchomieniu bez żadnych zmian stanu?

  1. android.bluetooth.BluetoothManager

Zapewnia metody:

public int getConnectionState (BluetoothDevice device, int profile); 

Ale to nie może być stosowana do wykrywania stanu podłączenia głośnika Bluetooth, ponieważ argument profilu akceptuje tylko GATT lub GATT_SERVER (dla urządzenia o niskiej energii), inne profile (HEADSET, HEALTH, A2DP) nie są obsługiwane.

  1. android.bluetooth.BluetoothAdapter

Zapewnia metody:

public int getProfileConnectionState (int profile); 

Funkcja ta może być używana do sprawdzania, czy lokalny Bluetooth adapter jest podłączony do dowolnego urządzenia zdalnego dla określonego profilu. Można go użyć do sprawdzenia określonego profilu. Ale nie można go użyć do sprawdzenia danego urządzenia.

Czy ktoś wie, jak uzyskać stan połączenia z danego urządzenia Bluetooth?

Z góry dziękuję.

+0

znalazłeś odpowiedź na to pytanie? –

+0

Uderzyło w to przez dwa dni, a pomoc mogła być bardzo doceniona. Znaleziono rozwiązanie. Chcę sprawdzić stan połączenia Gatt Bluetooth, jeśli jest podłączony, a następnie trzeba poczekać, aż przejdzie do stanu rozłączenia, ale użyłem getConnectionState() wyrzuca wyjątek. – prasanthMurugan

Odpowiedz

1

Zobacz notatki w odpowiedzi z podobnym pytaniem How to programmatically tell if a Bluetooth device is connected? (Android 2.2):

  • Nie ma sposobu, aby pobrać listę podłączonych urządzeń podczas uruchamiania aplikacji. Interfejs API Bluetooth nie pozwala na QUERY, ale pozwala słuchać CHANGES.
  • Szkarłatnym działaniem związanym z powyższym problemem byłoby pobranie listy wszystkich znanych/powiązanych urządzeń ... a następnie próba połączenia się z każdym z nich (w celu ustalenia, czy jesteś podłączony). Alternatywnie, możesz mieć usługę w tle obserwować interfejs API Bluetooth i zapisać stany urządzeń na dysku, aby aplikacja mogła być później używana.
Powiązane problemy