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ę:
- 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.
- 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?
- 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.
- 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ę.
znalazłeś odpowiedź na to pytanie? –
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