Bluetooth Low Energy

Bluetooth Low Energy (BLE), dostępny na urządzeniach z Androidem 4.3 i nowszym, tworzy krótkie połączenia między urządzeniami, aby przesyłać pakiety danych. BLE pozostaje w trybie uśpienia, gdy nie jest połączony. Dzięki temu BLE zapewnia mniejszą przepustowość i mniejsze 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 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 dotyczące 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 Bluetootha na Androidzie.

Tryby urządzenia

Gdy używasz BLE, urządzenie z Androidem może działać jako urządzenie peryferyjne, urządzenie centralne lub oba te urządzenia. Tryb urządzenia peryferyjnego umożliwia 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, a jednocześnie wysyłać 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ć określone urządzenia Bluetooth, gdy korzysta z BLE. Interfejsy API BLE umożliwiają deweloperom aplikacji tworzenie filtrów do wyszukiwania 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 Lokalizacja Włączono/Wyłączono jest w pozycji Włączono.
  3. Kliknij 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 chcą 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 BLUETOOTH_CONNECT mogą zezwalać aplikacjom na 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 > Zabezpieczenia 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 6.0 i nowszy obejmuje skanowanie BLE i dopasowywanie filtrów na kontrolerze Bluetooth. Urządzenie może filtrować wyniki skanowania i zgłaszać procesorowi aplikacji zdarzenia znalezieniautraty związane z urządzeniami BLE. 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 punktu dostępu z powodu skanowania BLE w poszukiwaniu urządzeń lub beaconów.

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

  • W przypadku zdarzenia OnFound główny punkt dostępu wybudza się po wykryciu konkretnego urządzenia.
  • W przypadku zdarzenia OnLost punkt dostępu budzi się, gdy nie można znaleźć określonego 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.