2014-09-11 8 views
8

Ich kann die gepaarten Bluetooth Geräte aufzählen, und ich muss ihren aktuellen Verbindungsstatus beim Start der App überprüfen.Programmgesteuertes Überprüfen des Verbindungsstatus eines Bluetooth-Geräts in Android?

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

Hier sind einige Anstrengungen, die ich versucht habe, aber nicht:

  1. android.bluetooth.BluetoothDevice

Es Das Verfahren hat den Bindungszustand von dem entfernten Gerät zu bekommen, und mögliche Werte für die Bindungszustände sind: BOND_NONE, BOND_BONDING, BOND_BONDED. Aber es ist nicht der Verbindungsstatus.

  1. android.bluetooth.BluetoothProfile

Verfahren verwendet werden kann, den Verbindungszustand zu erhalten, aber das BluetoothProfile Objekt muss zunächst erhalten werden.

public abstract int getConnectionState (BluetoothDevice device); 

Wie beschreiben in doc: "Kunden sollten getProfileProxy nennen (Context, BluetoothProfile.ServiceListener, int), das Profil Proxy bekommen.", Kann es nur in einem, wenn Zustandsänderungen genannt ServiceListener abgerufen werden.

Was passiert, wenn ich den Zustand beim Start abfrage, ohne dass es noch zu Zustandsänderungen kommt?

  1. android.bluetooth.BluetoothManager

Es stellt ein Verfahren:

public int getConnectionState (BluetoothDevice device, int profile); 

Aber es kann nicht verwendet werden, zu erkennen Verbindungszustand eines Bluetooth Lautsprecher, Da das Profilargument nur GATT oder GATT_SERVER akzeptiert (für Niedrigenergiegeräte), werden andere Profile (HEADSET, HEALTH, A2DP) nicht unterstützt.

  1. android.bluetooth.BluetoothAdapter

Es stellt ein Verfahren:

public int getProfileConnectionState (int profile); 

Diese Funktion verwendet werden kann, um zu überprüfen, ob die lokalen Bluetooth Adapter angeschlossen ist zu einem entfernten Gerät für ein bestimmtes Profil. 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.

Kann jemand den Verbindungsstatus eines gegebenen Bluetooth Geräts erhalten?

Vielen Dank im Voraus.

+0

Haben Sie eine Antwort darauf gefunden? –

+0

Struck auf dies für zwei Tage Hilfe könnte sehr geschätzt werden.Haben Sie irgendeine Lösung dafür gefunden. Ich möchte den Bluetooth Gatt Verbindungsstatus überprüfen, wenn verbunden ist, dann warten müssen, bis es sich in den getrennten Zustand bewegt, aber ich habe die getConnectionState() Ausnahme ausgelöst. – prasanthMurugan

Antwort

1

Siehe die Hinweise in der Antwort ähnliche Frage How to programmatically tell if a Bluetooth device is connected? (Android 2.2):

  • Es gibt keine Art und Weise ist eine Liste der angeschlossenen Geräte beim Start der Anwendung abzurufen. Die Bluetooth-API erlaubt Ihnen nicht, QUERY zu verwenden, stattdessen können Sie Änderungen anhören.
  • Eine heikle Arbeit um das oben genannte Problem wäre, die Liste aller bekannten/gepaarten Geräte zu erhalten ... dann versuchen, mit jedem zu verbinden (um festzustellen, ob Sie verbunden sind). Alternativ könnte ein Hintergrunddienst die Bluetooth-API überwachen und die Gerätezustände auf einen Datenträger schreiben, damit die Anwendung zu einem späteren Zeitpunkt verwendet werden kann.
Verwandte Themen