Skonfiguruj Bluetooth

Zanim aplikacja będzie mogła komunikować się przez Bluetooth lub Bluetooth Low Energy, musisz sprawdzić, czy urządzenie obsługuje Bluetooth i upewnić się, że jest on włączony. Pamiętaj, że to sprawdzenie jest konieczne tylko wtedy, gdy atrybut android:required we wpisie pliku manifestu <uses-feature.../> ma wartość false.

Jeśli Bluetooth nie jest obsługiwany, wyłącz wszystkie jego funkcje. Jeśli Bluetooth jest obsługiwany, ale wyłączony, możesz poprosić użytkownika o jego włączenie bez wychodzenia z aplikacji.

Pierwszym krokiem jest dodanie uprawnień Bluetooth do pliku manifestu, aby można było używać poniższych interfejsów API.

Po przyznaniu uprawnień konfiguracja Bluetootha możesz wykonać w 2 krokach przy użyciu BluetoothAdapter:

  1. Pobierz BluetoothAdapter.

    Urządzenie BluetoothAdapter jest wymagane do wszystkich działań związanych z Bluetoothem. BluetoothAdapter reprezentuje adapter Bluetooth (moduł radiowy Bluetooth) urządzenia. Aby uzyskać BluetoothAdapter, musisz najpierw mieć Context. Wykorzystaj ten kontekst, aby uzyskać instancję usługi systemowej BluetoothManager. Wywołanie BluetoothManager#getAdapter daje obiekt BluetoothAdapter. Jeśli getAdapter() zwraca wartość null, urządzenie nie obsługuje Bluetootha.

    Na przykład:

    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. Włącz Bluetooth.

    Następnie upewnij się, że Bluetooth jest włączony. Zadzwoń pod numer isEnabled(), aby sprawdzić, czy Bluetooth jest obecnie włączony. Jeśli ta metoda zwraca wartość fałsz, Bluetooth jest wyłączony. Aby poprosić o włączenie Bluetootha, wywołaj metodę startActivityForResult(), przekazując intencję ACTION_REQUEST_ENABLE. To połączenie wysyła prośbę o włączenie Bluetootha w ustawieniach systemu (bez zatrzymywania aplikacji).

    Na przykład:

    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);
    }
    

Pojawi się okno z prośbą o zgodę użytkownika na włączenie Bluetootha, tak jak na ilustracji 1. Jeśli użytkownik przyzna uprawnienia, system rozpocznie włączanie Bluetootha, a po zakończeniu (lub niepowodzeniu) procesu powróci do aplikacji.


Rysunek 1. Okno włączania Bluetooth.

Stała REQUEST_ENABLE_BT przekazywana do startActivityForResult() jest lokalnie zdefiniowaną liczbą całkowitą, która musi być większa niż lub równa 0. System przekazuje tę stałą wartość z powrotem do Twojej implementacji onActivityResult() jako parametr requestCode.

Jeśli włączysz Bluetooth, aktywność otrzyma kod wyniku RESULT_OK w wywołaniu zwrotnym onActivityResult(). Jeśli Bluetooth nie został włączony z powodu błędu (lub użytkownik odpowiedział „Odmów”), kod wyniku to RESULT_CANCELED.

Opcjonalnie aplikacja może też nasłuchiwać intencji transmisji ACTION_STATE_CHANGED, która jest transmitowana przez system przy każdej zmianie stanu Bluetooth. Ta transmisja zawiera dodatkowe pola EXTRA_STATE i EXTRA_PREVIOUS_STATE, które zawierają odpowiednio nowy i stary stan Bluetootha. Możliwe wartości tych dodatkowych pól to STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF i STATE_OFF. Nasłuchiwanie tej transmisji może być przydatne, jeśli aplikacja musi wykrywać zmiany w stanie działania Bluetooth w czasie działania.

Wskazówka: włączenie możliwości wykrycia automatycznie włącza Bluetooth. Jeśli przed wykonaniem aktywności Bluetooth zamierzasz regularnie włączać możliwość wykrywania urządzeń, możesz pominąć krok 2 z wcześniejszych.

Po włączeniu Bluetootha na urządzeniu możesz korzystać zarówno z Bluetootha, jak i Bluetootha Low Energy.

W przypadku klasycznej wersji Bluetooth możesz wyszukiwać urządzenia Bluetooth i łączyć się z urządzeniami Bluetooth.

W przypadku Bluetooth Low Energy możesz wyszukiwać urządzenia z BLE, łączyć się z serwerem GATT i przesyłać dane BLE.