Bluetooth einrichten

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:

  1. 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 ein BluetoothAdapter zu erhalten, benötigen Sie zuerst eine Context. Verwenden Sie diesen Kontext, um eine Instanz des Systemdienstes BluetoothManager abzurufen. Durch den Aufruf von BluetoothManager#getAdapter erhalten Sie ein BluetoothAdapter-Objekt. Wenn getAdapter() 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
    }
    
  2. 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 Bluetooth startActivityForResult() auf und übergeben Sie eine ACTION_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.

Tipp:Wenn Sie die Auffindbarkeit aktivieren, wird automatisch Bluetooth aktiviert. Wenn du beabsichtigst, die Gerätesichtbarkeit vor der Durchführung von Bluetooth-Aktivitäten beständig zu aktivieren, kannst du Schritt 2 der vorherigen Schritte überspringen.

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.