Android zapewnia wbudowane wsparcie platformy dla Bluetootha Low Energy (BLE) w centralnej roli oraz interfejsy API, których aplikacje mogą używać do wykrywania urządzeń, wysyłania zapytań do usług i przesyłania informacji.
Oto typowe przypadki użycia:
- Przenoszenie niewielkich ilości danych między urządzeniami w pobliżu.
- Interakcja z czujnikami zbliżeniowymi w celu zapewnienia użytkownikom niestandardowych wrażeń na podstawie ich bieżącej lokalizacji.
W przeciwieństwie do klasycznego Bluetootha funkcja BLE została zaprojektowana z myślą o znacznie mniejszym zużyciu energii. Dzięki temu aplikacje mogą komunikować się z urządzeniami BLE, które mają bardziej rygorystyczne wymagania dotyczące zasilania, np. czujniki zbliżeniowe, pulsory czy urządzenia fitness.
Uwaga: gdy użytkownik sparuje swoje urządzenie z innym urządzeniem za pomocą BLE, dane przesyłane między tymi dwoma urządzeniami są dostępne dla wszystkich aplikacji na urządzeniu użytkownika.
Dlatego jeśli Twoja aplikacja rejestruje dane wrażliwe, musisz zaimplementować zabezpieczenia na poziomie aplikacji, aby chronić prywatność tych danych.
Podstawy
Aby urządzenia obsługujące BLE mogły przesyłać dane między sobą, muszą najpierw utworzyć kanał komunikacji. Aby korzystać z interfejsów Bluetooth LE API, musisz zadeklarować kilka uprawnień w pliku manifestu. Gdy aplikacja ma uprawnienia do korzystania z Bluetootha, musi uzyskać dostęp do BluetoothAdapter
, aby sprawdzić, czy Bluetooth jest dostępny na urządzeniu. Jeśli tak, urządzenie skanuje dostępne urządzenia BLE.
Po znalezieniu urządzenia możliwości urządzenia BLE są wykrywane przez połączenie z serwerem GATT na urządzeniu BLE.
Po nawiązaniu połączenia dane mogą być przesyłane za pomocą połączonego urządzenia w zależności od dostępnych usług i charakterystyki.
Kluczowe terminy i pojęcia
Poniżej znajdziesz podsumowanie kluczowych pojęć i terminów związanych z BLE:
- Ogólny profil atrybutów (GATT)
- Profil GATT to ogólna specyfikacja wysyłania i odbierania krótkich fragmentów danych, zwanych „atrybutami”, przez połączenie BLE. Wszystkie obecne profile aplikacji BLE są oparte na GATT. Aby dowiedzieć się więcej, zapoznaj się z przykładem kodu Android BluetoothLeGatt na GitHubie.
- Profile
- Organizacja 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 mieć więcej niż 1 profil. Urządzenie może na przykład zawierać monitor tętna i detektor poziomu naładowania baterii.
- Protokół ATT
- Protokół GATT opiera się na protokole Attribute Protocol (ATT). Jest to również nazywane GATT/ATT. Zasady ATT są zoptymalizowane pod kątem wyświetlania 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), który jest standardowym 128-bitowym formatem identyfikatora ciągu tekstowego używanego do jednoznacznego identyfikowania informacji. Atrybuty przenoszone przez ATT są sformatowane jako cechy i usługi.
- Cecha
- Charakterystyka zawiera jedną wartość i 0–n elementów opisujących tę wartość. Charakterystykę można traktować jako typ, który jest analogiczny do klasy.
- Descriptor
- Deskryptory to zdefiniowane atrybuty opisujące wartość charakterystyczną. Na przykład deskryptor może zawierać opis zrozumiały dla człowieka, dopuszczalny zakres wartości cechy lub jednostkę miary właściwą dla wartości cechy.
- Usługa
- Usługa to zbiór cech. Możesz na przykład utworzyć usługę o nazwie „Pulsometr”, która oferuje parametry takie jak „pomiar tętna”. Listę istniejących profili i usług opartych na GATT znajdziesz na stronie bluetooth.org.
Role i obowiązki
Gdy urządzenie wchodzi w interakcję z urządzeniem BLE, role i odpowiedzialnie są rozdzielane na 2 sposoby:
Centralne a peryferyjne Dotyczy to samego połączenia BLE: urządzenie w roli centralnej skanuje, szukając reklamy, a urządzenie w roli peryferyjnej wyświetla reklamę. Dwa urządzenia, które obsługują tylko rolę peryferyjną, nie mogą ze sobą komunikować się nawzajem, tak samo jak dwa urządzenia, które obsługują tylko rolę centralną.
Serwer GATT a klient GATT Określa ono sposób komunikacji między dwoma urządzeniami po nawiązaniu połączenia. Urządzenie z rolą klienta wysyła żądania danych, a urządzenie z rolą serwera je realizuje.
Aby zrozumieć różnicę między podziałem ról na urządzenia peryferyjne i serwery oraz klientów, rozważ przykład, w którym masz telefon z Androidem i śledzący aktywność tracker z obsługą BLE, który przekazuje dane z czujników z powrotem do telefonu.
Telefon (urządzenie centralne) aktywnie skanuje w poszukiwaniu urządzeń BLE. Tracker aktywności (urządzenie peryferyjne) reklamuje się i czeka na żądanie połączenia.
Gdy telefon i aktywność trackera nawiążą połączenie, zaczną przesyłać sobie nawzajem metadane GATT. W tym przypadku aplikacja działająca na telefonie wysyła żądania danych, więc działa jako klient GATT. Moduł do śledzenia aktywności spełnia te żądania, więc działa jak serwer GATT.
Alternatywny projekt aplikacji może polegać na tym, że telefon będzie pełnił rolę serwera GATT. Więcej informacji znajdziesz w sekcji BluetoothGattServer
.