Bluetooth Low Energy

Bluetooth Low Energy (BLE), dostępny w Androidzie 4.3 i nowszych wersjach, 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 zużycie energii w porównaniu z klasycznym Bluetooth. BLE idealnie nadaje się do aplikacji takich jak pulsometr czy klawiatura bezprzewodowa. Aby korzystać z BLE, urządzenia muszą mieć chipset, który obsługuje 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 includes interfejsy API dla deweloperów BLE, w tym interfejsy API do interakcji między serwerami GATT a klientami GATT. Aby w pełni wykorzystać interfejsy API BLE, zaimplementuj wymagania Android Bluetooth HCI.

Tryby urządzenia

Podczas korzystania z BLE urządzenie z Androidem może działać jako urządzenie peryferyjne, urządzenie centralne lub oba te urządzenia. 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 peryferyjnym. 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 peryferyjnego BLE.

Skanowanie BLE

Podczas korzystania z BLE urządzenie z Androidem może wydajniej wyszukiwać i skanować określone urządzenia Bluetooth. Interfejsy API BLE umożliwiają deweloperom aplikacji tworzenie filtrów do znajdowania urządzeń przy mniejszym udziale kontrolera hosta.

Skanowanie lokalizacji

Usługi lokalizacyjne urządzenia mogą używać Bluetootha do wykrywania beaconów Bluetooth i zapewniania dokładniejszej lokalizacji. Użytkownicy mogą włączyć tę funkcję w ten sposób:

  1. Otwórz Ustawienia > Bezpieczeństwo i lokalizacja > Lokalizacja.
  2. Sprawdź, czy przełącznik Włączono/Wyłączono jest w pozycji Włączono.
  3. Otwórz Tryb.
  4. 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, aplikacja nie będzie otrzymywać żadnych wyników skanowania BLE.

W Androidzie 12 i nowszych wersjach uprawnienia BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, i BLUETOOTH_CONNECT mogą zezwalać aplikacjom na skanowanie w poszukiwaniu 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 Bluetooth w tle na poziomie systemu, otwierając Ustawienia > Bezpieczeństwo i lokalizacja > Lokalizacja > Skanowanie i klikając przełącznik Skanowanie Bluetooth w pozycji wyłączonej. Nie ma to wpływu na skanowanie BLE w poszukiwaniu lokalizacji ani urządzeń lokalnych.

Filtrowanie wyników skanowania

Android 6.0 i nowsze wersje obejmują skanowanie BLE i dopasowywanie filtrów na kontrolerze Bluetooth. Urządzenie może filtrować wyniki skanowania i zgłaszać procesorowi aplikacji (AP) zdarzenia znalezione i utracone związane z urządzeniami BLE. Filtrowanie działa też w przypadku skanowania wsadowego, co pomaga oszczędzać energię, ponieważ urządzenie przenosi skanowanie BLE do oprogramowania układowego. Skanowanie wsadowe zmniejsza częstotliwość wybudzania się AP z powodu skanowania BLE w poszukiwaniu urządzeń lub beaconów.

Funkcja OnFound/OnLost jest zaimplementowana w kontrolerze Bluetooth, a następnie testowana, aby potwierdzić, że urządzenia BLE nie są pomijane podczas skanowania. Pozwala to oszczędzać energię i może też przynieść te korzyści:

  • W przypadku zdarzenia OnFound główny AP wybudza się po wykryciu konkretnego urządzenia.
  • W przypadku zdarzenia OnLost AP wybudza się, gdy nie można znaleźć konkretnego urządzenia.
  • Aplikacje frameworka otrzymują mniej niechcianych powiadomień, gdy urządzenie w pobliżu znajduje się w zasięgu.
  • Ciągłe skanowanie umożliwia aplikacjom frameworka otrzymywanie powiadomień, gdy urządzenie jest poza zasięgiem.

Filtr skanowania może być oparty na wykryciu reklam urządzenia (zdarzenie OnFound). Warstwa Java może określać parametry takie jak pierwsze wykrycie (lub określona liczba reklam od pierwszego wykrycia). Zaimplementuj filtrowanie BLE za pomocą polecenia HCI Advertising Packet Content Filter.