Bluetooth Low Energy (BLE), dostępny na urządzeniach z Androidem 4.3 i nowszymi, tworzy krótkie połączenia między urządzeniami, aby przesyłać pakiety danych. Gdy BLE nie jest połączony, pozostaje w trybie uśpienia. Dzięki temu BLE zapewnia mniejszą przepustowość i mniejsze zużycie energii w porównaniu z Bluetooth Classic. BLE idealnie nadaje się do aplikacji takich jak pulsometr czy klawiatura bezprzewodowa. Aby korzystać z BLE, urządzenia muszą mieć chipset obsługujący tę technologię.
Implementacja
Wszystkie obecne profile aplikacji BLE są oparte na profilu Generic Attribute (GATT). Gdy urządzenie z Androidem wchodzi w interakcję z urządzeniem BLE, urządzenie wysyłające informacje jest serwerem, a urządzenie odbierające informacje jest klientem. Android zawiera interfejsy API dla programistów do obsługi BLE, w tym interfejsy API do interakcji między serwerami GATT a klientami GATT. Aby w pełni wykorzystać interfejsy BLE API, wdróż wymagania dotyczące interfejsu HCI Bluetooth na Androidzie.
Tryby urządzenia
Gdy używasz BLE, urządzenie z Androidem może pełnić funkcję urządzenia peryferyjnego, urządzenia centralnego lub obu tych funkcji. Tryb peryferyjny umożliwia urządzeniom wysyłanie pakietów reklamowych. Tryb centralny umożliwia urządzeniom skanowanie w poszukiwaniu reklam. Urządzenie z Androidem działające jako urządzenie peryferyjne i centralne może komunikować się z innymi urządzeniami peryferyjnymi BLE, wysyłając reklamy w trybie urządzenia peryferyjnego. Urządzenia obsługujące Bluetooth 4.1 i starsze mogą używać BLE tylko w trybie centralnym. Starsze chipsety urządzeń mogą nie obsługiwać trybu urządzenia peryferyjnego BLE.
Skanowanie BLE
Urządzenie z Androidem może skuteczniej wyszukiwać i skanować konkretne urządzenia Bluetooth, gdy korzysta z BLE. Interfejsy API BLE umożliwiają deweloperom aplikacji tworzenie filtrów do wyszukiwania urządzeń przy mniejszym zaangażowaniu kontrolera hosta.
Skanowanie lokalizacji
Usługi lokalizacyjne urządzenia mogą używać Bluetootha do wykrywania beaconów Bluetootha i określania dokładniejszej lokalizacji. Aby włączyć tę funkcję:
- Otwórz Ustawienia > Bezpieczeństwo i lokalizacja > Lokalizacja.
- Sprawdź, czy przełącznik Lokalizacja Włączono/Wyłączono jest w pozycji Włączono.
- Kliknij Tryb.
- Wybierz tryb Wysoka dokładność lub Oszczędzanie baterii.
W Androidzie 11 i starszych wersjach poszczególne aplikacje wymagają uprawnień do lokalizacji, aby korzystać ze skanowania BLE, nawet jeśli skanują tylko w celu znalezienia urządzeń, z którymi można się połączyć. Jeśli użytkownik wyłączy skanowanie lokalizacji lub nie przyzna aplikacji uprawnień do lokalizacji, nie będzie ona otrzymywać wyników skanowania BLE.
W Androidzie 12 i nowszych uprawnienia BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
i BLUETOOTH_CONNECT
umożliwiają aplikacjom skanowanie urządzeń w pobliżu bez konieczności proszenia o uprawnienia do lokalizacji. Więcej informacji znajdziesz w artykule Uprawnienia Bluetooth.
Użytkownicy mogą wyłączyć skanowanie Bluetootha w tle na poziomie systemu, otwierając Ustawienia > Bezpieczeństwo i lokalizacja > Lokalizacja > Skanowanie i klikając przełącznik Skanowanie Bluetootha, aby go wyłączyć. Nie ma to wpływu na skanowanie BLE pod kątem lokalizacji ani urządzeń lokalnych.
Filtrowanie wyników skanowania
Android w wersji 6.0 lub nowszej obejmuje skanowanie BLE i dopasowywanie filtrów na kontrolerze Bluetooth. Urządzenie może filtrować wyniki skanowania i zgłaszać zdarzenia znalezienia i utraty urządzeń BLE do procesora aplikacji (AP). Filtrowanie działa też w przypadku skanowania wsadowego, co pomaga oszczędzać energię, ponieważ urządzenie przekazuje skanowanie BLE do oprogramowania sprzętowego. Skanowanie wsadowe zmniejsza częstotliwość wybudzania się punktu dostępu z powodu skanowania BLE w poszukiwaniu urządzeń lub beaconów.
Funkcja OnFound
/OnLost
jest zaimplementowana w kontrolerze Bluetootha i testowana w celu potwierdzenia, że urządzenia BLE nie są pomijane podczas skanowania. Dzięki temu oszczędzasz energię, a także możesz uzyskać te korzyści:
- W przypadku zdarzenia
OnFound
główny punkt dostępu budzi się po wykryciu określonego urządzenia. - W przypadku zdarzenia
OnLost
punkt dostępu budzi się, gdy nie można znaleźć konkretnego urządzenia. - Aplikacje platformy otrzymują mniej niechcianych powiadomień, gdy urządzenie w pobliżu jest w zasięgu.
- Ciągłe skanowanie umożliwia powiadamianie aplikacji platformy o tym, że urządzenie jest poza zasięgiem.
Filtr skanowania może być oparty na wykrywaniu reklam urządzenia (zdarzenie OnFound
). Warstwa Java może określać parametry, takie jak pierwsze wykrycie (lub określona liczba reklam od pierwszego wykrycia).
Wdróż filtrowanie BLE za pomocą polecenia HCI Advertising Packet Content Filter.