Zanim aplikacja będzie mogła komunikować się przez Bluetooth lub Bluetooth Low Energy,
Musisz sprawdzić, czy urządzenie jest obsługiwane przez Bluetooth. Jeśli tak,
sprawdź, czy jest włączony. Pamiętaj, że ta kontrola jest konieczna tylko wtedy, gdy
Atrybut android:required
we wpisie pliku manifestu <uses-feature.../>
to
ustawiono na false
.
Jeśli Bluetooth nie jest obsługiwany, wyłącz wszystkie funkcje Bluetooth funkcje zabezpieczeń. Jeśli Bluetooth jest obsługiwany, ale wyłączony, możesz poprosić włączenie Bluetootha bez opuszczania aplikacji.
Pierwszy krok to dodanie uprawnień dotyczących Bluetootha do pliku manifestu, aby korzystać z poniższych interfejsów API.
Po uzyskaniu uprawnień konfiguracja Bluetooth odbywa się w dwóch krokach
za pomocą funkcji BluetoothAdapter
:
Pobierz
BluetoothAdapter
.Urządzenie
BluetoothAdapter
jest wymagane do każdej aktywności związanej z Bluetoothem.BluetoothAdapter
reprezentuje adapter Bluetooth urządzenia ( Bluetooth). Aby uzyskaćBluetoothAdapter
, musisz najpierw miećContext
Wykorzystaj ten kontekst, aby uzyskać wystąpienieBluetoothManager
usłudze systemowej. Dzwonię pod numerBluetoothManager#getAdapter
otrzymasz obiektBluetoothAdapter
. JeśligetAdapter()
zwraca wartość null, to 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 }
Włącz Bluetooth.
Następnie musisz się upewnić, że Bluetooth jest włączony. Zadzwoń do nas
isEnabled()
do Sprawdź, czy Bluetooth jest włączony. Jeśli ta metoda zwraca wartość fałsz, to Bluetooth jest wyłączony. Aby poprosić o włączenie Bluetooth, zadzwoń podstartActivityForResult()
zaliczanieACTION_REQUEST_ENABLE
działanie intencji. W ramach tego połączenia pojawia się prośba o włączenie Bluetootha 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ę na włączenie Bluetooth, tak jak w rysunek 1. Jeśli użytkownik wyrazi zgodę, system zacznie włączać Bluetooth. a po zakończeniu tego procesu (lub jego niepowodzenia) wraca do aplikacji.
()
Rysunek 1. Okno włączania Bluetootha.
Stała REQUEST_ENABLE_BT
przekazana do
startActivityForResult()
.
to lokalnie zdefiniowana liczba całkowita, która musi być większa niż lub równa 0. System
przekazuje Ci tę stałą
onActivityResult()
jako parametr requestCode
.
Jeśli Bluetooth zostanie włączony, Twoja aktywność będzie otrzymywać
RESULT_OK
kodu wyniku w sekcji
onActivityResult()
oddzwonienie. Jeśli Bluetooth nie został włączony z powodu błędu (lub
użytkownik odpowiedział „Odrzucaj”), kod wyniku
RESULT_CANCELED
Opcjonalnie aplikacja może też nasłuchiwać
ACTION_STATE_CHANGED
intencję rozgłoszeniową, która jest wysyłana przez system za każdym razem, gdy stan połączenia Bluetooth
zmian. Ta wiadomość zawiera dodatkowe pola
EXTRA_STATE
i
EXTRA_PREVIOUS_STATE
,
który zawiera odpowiednio nowy i stary stan Bluetootha. Możliwe wartości:
te dodatkowe pola są
STATE_TURNING_ON
STATE_ON
,
STATE_TURNING_OFF
,
oraz STATE_OFF
.
Nasłuchiwanie tej transmisji może być przydatne, jeśli aplikacja musi wykrywać czas działania
zmian stanu Bluetootha.
Po włączeniu Bluetootha na urządzeniu możesz używać zarówno klasycznego, Bluetooth Low Energy.
W przypadku klasycznego Bluetootha możesz znaleźć urządzenia Bluetooth. oraz połączenia z urządzeniami Bluetooth.
W przypadku Bluetooth Low Energy możesz znaleźć urządzenia BLE, połączyć się z serwerem GATT oraz przenieść dane BLE.