Wie programmierst du den Verbindungsstatus eines Bluetooth-Geräts in Android?

8

Ich kann die gepaarten Bluetooth -Geräte aufzählen, und ich muss ihren aktuellen Verbindungsstatus beim App-Start überprüfen.

Aber ich habe keine Möglichkeit gefunden, den Verbindungsstatus zu erhalten?!

Hier sind einige Bemühungen, die ich versucht habe, aber gescheitert sind:

  1. android.bluetooth.BluetoothDevice

Es gibt die Methode, um den Verbindungsstatus des entfernten Geräts zu erhalten, und mögliche Werte für den Verbindungsstatus sind: BOND_NONE , BOND_BONDING , BOND_BONDED . Aber es ist nicht der Verbindungsstatus.

  1. android.bluetooth.BluetoothProfile

Die Methode kann verwendet werden, um den Verbindungsstatus zu erhalten, aber das BluetoothProfile -Objekt muss zuerst abgerufen werden.

%Vor%

Wie in doc beschrieben: " Clients sollten getProfileProxy (Context, BluetoothProfile.ServiceListener, int) aufrufen, um den Profilproxy zu erhalten. " Er kann NUR in einem ServiceListener abgerufen werden, wenn er aufgerufen wird Statusänderungen.

Was passiert, wenn ich den Status beim Start abfrage, ohne dass bereits Statusänderungen vorgenommen wurden?

  1. android.bluetooth.BluetoothManager

Es bietet eine Methode:

%Vor%

Aber es kann nicht verwendet werden, um den Verbindungsstatus eines Bluetooth Sprechers zu erkennen, da das Profilargument nur GATT oder GATT_SERVER (für Niedrigenergiegerät), andere Profile ( HEADSET , HEALTH , A2DP ) werden nicht unterstützt.

  1. android.bluetooth.BluetoothAdapter

Es bietet eine Methode:

%Vor%

Mit dieser Funktion kann überprüft werden, ob der lokale Bluetooth Adapter für ein bestimmtes Profil mit einem Remote-Gerät verbunden ist. Es kann verwendet werden, um ein bestimmtes Profil zu überprüfen. Aber es kann nicht verwendet werden, um ein bestimmtes Gerät zu überprüfen.

Weiß jemand, wie man den Verbindungsstatus eines gegebenen Bluetooth -Geräts erhält?

Vielen Dank im Voraus.

    
Raymond Xie 11.09.2014, 02:36
quelle

1 Antwort

1

Siehe die Anmerkungen in der Antwort von ähnlicher Frage Wie programmiere ich, ob ein Bluetooth-Gerät angeschlossen ist? (Android 2.2) :

  • Es gibt keine Möglichkeit, beim Start der Anwendung eine Liste der verbundenen Geräte abzurufen. Die Bluetooth-API erlaubt Ihnen nicht, QUERY zu verwenden, stattdessen können Sie CHANGES anhören.
  • Eine hoaky Arbeit um das oben genannte Problem würde sein, die Liste aller bekannten / gepaarten Geräte zu erhalten ... und dann versuchen, sich mit jedem zu verbinden (um festzustellen, ob Sie verbunden sind). Alternativ können Sie einen Hintergrunddienst die Bluetooth-API überwachen lassen und die Gerätezustände auf die Festplatte schreiben, damit Ihre Anwendung sie zu einem späteren Zeitpunkt verwenden kann.
Ale 25.02.2016 13:25
quelle

Tags und Links