Bluetooth Low Energy

Android zapewnia wbudowaną obsługę technologii Bluetooth Low Energy (BLE) w głównej roli i udostępnia interfejsy API, za pomocą których aplikacje mogą wykrywać urządzenia, wyszukiwać usługi i przesyłać informacje.

Typowe przypadki użycia to:

  • Przesyłanie niewielkich ilości danych między urządzeniami w pobliżu.
  • Interakcja z czujnikami zbliżeniowymi w celu zapewnienia użytkownikom spersonalizowanych funkcji na podstawie ich bieżącej lokalizacji.

W przeciwieństwie do klasycznego Bluetootha funkcja BLE została zaprojektowana pod kątem znacznie mniejszego zużycia energii. Dzięki temu aplikacje mogą komunikować się z urządzeniami BLE, które mają większe wymagania dotyczące zasilania, takimi jak czujniki zbliżeniowe, pulsometr czy urządzenia fitness.

Uwaga: gdy użytkownik sparuje urządzenie z innym urządzeniem za pomocą BLE, dane przesyłane między tymi urządzeniami są dostępne dla wszystkich aplikacji na urządzeniu użytkownika.

Jeśli więc aplikacja przechwytuje dane wrażliwe, musisz wdrożyć zabezpieczenia na poziomie aplikacji, by chronić prywatność tych danych.

Podstawy

Aby urządzenia z obsługą BLE mogły przesyłać dane między sobą, muszą najpierw utworzyć kanał komunikacji. Korzystanie z interfejsów Bluetooth LE API wymaga zadeklarowania kilku uprawnień w pliku manifestu. Gdy aplikacja ma uprawnienia do korzystania z Bluetootha, musi mieć dostęp do: BluetoothAdapter i określić, czy na urządzeniu jest dostępny Bluetooth. Jeśli Bluetooth jest dostępny, urządzenie wyszuka urządzenia BLE w pobliżu. Gdy urządzenie zostanie znalezione, jego możliwości są wykrywane przez połączenie z serwerem GATT na urządzeniu BLE. Po nawiązaniu połączenia dane będzie można przenieść z połączonego urządzenia w zależności od dostępnych usług i charakterystyki.

Kluczowe terminy i koncepcje

Poniżej znajdziesz podsumowanie najważniejszych pojęć i terminów związanych z BLE:

  • Ogólny profil atrybutu (GATT)
    Profil GATT to ogólna specyfikacja wysyłania i odbierania krótkich danych zwanych „atrybutami” za pomocą linku BLE. Wszystkie obecne profile aplikacji BLE są oparte na GATT. Aby dowiedzieć się więcej, zapoznaj się z przykładem korzystania z Androida BluetoothLeGatt na GitHubie.
  • Profile
    Bluetooth SIG definiuje wiele profili dla urządzeń BLE. Profil to specyfikacja sposobu działania urządzenia w konkretnej aplikacji. Pamiętaj, że urządzenie może zaimplementować więcej niż jeden profil. Urządzenie może na przykład zawierać pulsometr i czujnik poziomu baterii.
  • Protokół ATT (Attribute Protocol)
    GATT opiera się na protokole Attribute Protocol (ATT). Określa się je także jako GATT/ATT. Zasada ATT jest zoptymalizowana pod kątem działania na urządzeniach BLE. W tym celu używa jak najmniejszej liczby bajtów. Każdy atrybut jest jednoznacznie identyfikowany przez unikalny identyfikator uniwersalny (UUID), czyli standardowy 128-bitowy format identyfikatora ciągu znaków używany do jednoznacznej identyfikacji informacji. Atrybuty przenoszone przez ATT mają format charakterystyki i usługi.
  • Cechy
    Cecha składa się z pojedynczej wartości i deskryptorów składających się z 0-n, które opisują wartość cechy. Cechą może być typ – podobny do klasy.
  • Deskryptor
    Deskryptory to zdefiniowane atrybuty opisujące wartość charakterystyczną. Na przykład deskryptor może określać zrozumiały dla człowieka opis, akceptowany zakres wartości cechy lub jednostkę miary odpowiadającą wartości cechy.
  • Usługa
    Usługa to zbiór cech. Możesz np. mieć usługę o nazwie „Monitoring tętna”, która zawiera takie dane jak „pomiar tętna”. Listę dotychczasowych profili i usług opartych na GATT znajdziesz na stronie bluetooth.org.

Role i obowiązki

W przypadku interakcji urządzenia z urządzeniem BLE obowiązują te role i obowiązki:

  • Urządzenie centralne lub peryferyjne. Dotyczy to samego połączenia BLE. Urządzenie pełniące główną rolę skanuje urządzenie, szukając reklamy, a urządzenie peryferyjne generuje reklamę.

  • Serwer GATT a klient GATT. To określa sposób, w jaki dwa urządzenia komunikują się ze sobą po nawiązaniu połączenia. Aby zrozumieć, na czym polega różnica, wyobraź sobie, że masz telefon z Androidem i urządzenie do śledzenia aktywności, które jest urządzeniem z BLE. Telefon pełni główną rolę, a monitor aktywności – rolę urządzenia peryferyjnego. Aby nawiązać połączenie BLE, musisz mieć po jednym elemencie obu typów. 2 rzeczy, które obsługują tylko urządzenia peryferyjne, nie mogą komunikować się ze sobą, a 2 rzeczy, które obsługują tylko urządzenie centralne.

Po nawiązaniu połączenia między telefonem a urządzeniem do śledzenia aktywności zaczynają przesyłać między sobą metadane GATT. W zależności od rodzaju przesyłanych danych jeden lub drugi serwer może działać jako serwer. Jeśli na przykład monitor aktywności chce przesyłać dane z czujnika do telefonu, może działać jako serwer. Jeśli Tracker aktywności chce otrzymywać aktualne informacje z telefonu, może wtedy pełnić rolę serwera.

W przykładzie użytym w tym temacie aplikacja (uruchomiona na urządzeniu z Androidem) jest klientem GATT. Aplikacja pobiera dane z serwera GATT, czyli monitora tętna z BLE, który obsługuje Profil tętna. Możesz też zaprojektować aplikację tak, aby odgrywała rolę serwera GATT. Więcej informacji znajdziesz w sekcji BluetoothGattServer.