Bevor deine App über Bluetooth oder Bluetooth Low Energy kommunizieren kann, musst du überprüfen, ob Bluetooth auf dem Gerät unterstützt wird. Falls ja, muss es aktiviert sein. Diese Prüfung ist nur erforderlich, wenn das Attribut android:required
im Manifestdateieintrag <uses-feature.../>
auf false
festgelegt ist.
Wenn Bluetooth nicht unterstützt wird, sollten Sie alle Bluetooth-Funktionen deaktivieren. Wenn Bluetooth unterstützt, aber deaktiviert ist, können Sie den Nutzer auffordern, Bluetooth zu aktivieren, ohne Ihre App zu verlassen.
Im ersten Schritt musst du deiner Manifestdatei die Bluetooth-Berechtigungen hinzufügen, um die folgenden APIs zu verwenden.
Sobald die Berechtigungen vorhanden sind, wird die Bluetooth-Einrichtung in zwei Schritten mit dem BluetoothAdapter
ausgeführt:
BluetoothAdapter
herunterladen.Die
BluetoothAdapter
ist für alle Bluetooth-Aktivitäten erforderlich.BluetoothAdapter
steht für den Bluetooth-Adapter des Geräts (den Bluetooth-Funk). Um einBluetoothAdapter
zu erhalten, benötigen Sie zuerst eineContext
. Verwenden Sie diesen Kontext, um eine Instanz des SystemdienstesBluetoothManager
abzurufen. Durch den Aufruf vonBluetoothManager#getAdapter
erhalten Sie einBluetoothAdapter
-Objekt. WenngetAdapter()
null zurückgibt, unterstützt das Gerät Bluetooth nicht.Beispiele:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Aktiviere Bluetooth.
Stellen Sie als Nächstes sicher, dass Bluetooth aktiviert ist. Rufe
isEnabled()
auf, um zu prüfen, ob Bluetooth derzeit aktiviert ist. Wenn diese Methode "false" zurückgibt, ist Bluetooth deaktiviert. Rufen Sie zum Aktivieren von BluetoothstartActivityForResult()
auf und übergeben Sie eineACTION_REQUEST_ENABLE
-Intent-Aktion. Dieser Aufruf gibt eine Anfrage zum Aktivieren von Bluetooth über die Systemeinstellungen aus, ohne die App zu beenden.Beispiele:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Es wird ein Dialogfeld angezeigt, in dem die Nutzerberechtigung zum Aktivieren von Bluetooth angefordert wird (siehe Abbildung 1). Wenn der Nutzer die Berechtigung erteilt, beginnt das System mit der Aktivierung von Bluetooth und der Fokus kehrt zu Ihrer App zurück, sobald der Vorgang abgeschlossen ist oder fehlschlägt.
Abbildung 1: Das Dialogfeld zum Aktivieren von Bluetooth
Die an startActivityForResult()
übergebene Konstante REQUEST_ENABLE_BT
ist eine lokal definierte Ganzzahl, die größer oder gleich 0 sein muss. Das System übergibt diese Konstante in der onActivityResult()
-Implementierung als requestCode
-Parameter an Sie zurück.
Wenn die Aktivierung von Bluetooth erfolgreich war, empfängt Ihre Aktivität den Ergebniscode RESULT_OK
im onActivityResult()
-Callback. Wenn Bluetooth aufgrund eines Fehlers nicht aktiviert wurde (oder der Nutzer mit „Ablehnen“) geantwortet hat, lautet der Ergebniscode RESULT_CANCELED
.
Optional kann Ihre Anwendung auch auf den Broadcast-Intent ACTION_STATE_CHANGED
warten, der vom System gesendet wird, wenn sich der Bluetooth-Status ändert. Dieser Broadcast enthält die zusätzlichen Felder EXTRA_STATE
und EXTRA_PREVIOUS_STATE
, die den neuen bzw. den alten Bluetooth-Status enthalten. Mögliche Werte für diese zusätzlichen Felder sind STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
und STATE_OFF
.
Das Warten auf diesen Broadcast kann nützlich sein, wenn deine App Laufzeitänderungen am Bluetooth-Status erkennen muss.
Sobald Bluetooth auf dem Gerät aktiviert ist, können Sie sowohl Bluetooth Classic als auch Bluetooth Low Energy verwenden.
Mit Bluetooth Classic können Sie Bluetooth-Geräte suchen und eine Verbindung zu Bluetooth-Geräten herstellen.
Mit Bluetooth Low Energy können Sie BLE-Geräte finden, eine Verbindung zu einem GATT-Server herstellen und BLE-Daten übertragen.