Platforma Android obsługuje stos sieci Bluetooth, który umożliwia urządzeniu bezprzewodową wymianę danych z innymi urządzeniami Bluetooth. Platforma aplikacji umożliwia dostęp do funkcji Bluetooth za pomocą interfejsów API Bluetooth. Te interfejsy API pozwalają aplikacjom łączyć się z innymi urządzeniami Bluetooth, co pozwala korzystać z połączeń bezprzewodowych i połączeń między punktami.
Dzięki interfejsom API Bluetooth aplikacja może wykonywać te czynności:
- Wyszukaj inne urządzenia Bluetooth.
- Zapytanie o lokalną kartę Bluetooth w przypadku sparowanych urządzeń Bluetooth.
- Ustal kanały RFCOMM.
- łączyć się z innymi urządzeniami przez wykrywanie usług;
- przenosić dane na inne urządzenia i z innych urządzeń,
- Zarządzaj wieloma połączeniami.
Ten temat dotyczy klasycznego Bluetootha. Klasyczny Bluetooth to odpowiedni wybór do działań, które zużywają więcej energii, np. przesyłania strumieniowego i komunikacji między urządzeniami. W przypadku urządzeń Bluetooth o niskich wymaganiach zasilania rozważ użycie połączeń Bluetooth Low Energy.
W tej dokumentacji opisujemy różne profile Bluetootha oraz wyjaśniamy, jak używać interfejsów API Bluetooth do wykonywania 4 głównych zadań niezbędnych do komunikacji przez Bluetooth:
- Konfiguruję Bluetooth.
- Znajduję urządzenia, które są sparowane lub dostępne w okolicy.
- Łączę urządzenia.
- Przenoszenie danych między urządzeniami
Instrukcję korzystania z interfejsów API Bluetooth znajdziesz w artykule o przykładowej aplikacji do obsługi czatu Bluetooth.
Podstawy
Aby urządzenia z obsługą Bluetootha mogły przesyłać dane między sobą, muszą najpierw utworzyć kanał komunikacji za pomocą procesu parowania. Jedno urządzenie, które jest wykrywalne, udostępnia się do obsługi przychodzących żądań połączenia. Inne urządzenie znajduje wykrywalne urządzenie przy użyciu procesu wykrywania usług. Gdy wykrywalne urządzenie zaakceptuje żądanie parowania, 2 urządzenia zakończą proces łączenia i wymieniają się kluczami bezpieczeństwa. Urządzenia zapisują je w pamięci podręcznej, by użyć ich później. Po zakończeniu procesu parowania i łączenia urządzenia wymieniają informacje. Po zakończeniu sesji urządzenie, które zainicjowało żądanie parowania, zwalnia kanał, który je połączył z urządzeniem wykrywalnym. Oba urządzenia pozostają jednak połączone, więc mogą się połączyć automatycznie podczas kolejnej sesji, o ile znajdują się one w odległości od siebie, a żadne z nich nie usunęło powiązania.
Korzystanie z interfejsów API Bluetooth wymaga zadeklarowania kilku uprawnień w pliku manifestu. Gdy aplikacja ma uprawnienia do korzystania z Bluetootha, musi mieć dostęp do urządzenia BluetoothAdapter
i określić, czy na urządzeniu dostępny jest Bluetooth.
Jeśli Bluetooth jest dostępny, możesz wykonać połączenie w 3 krokach:
- Znajdź urządzenia Bluetooth w pobliżu – urządzenia już sparowane lub nowe.
- Połącz się z urządzeniem Bluetooth.
- Przenieś dane z połączonego urządzenia
Niektóre urządzenia używają określonego profilu Bluetooth, który deklaruje przesyłane dane.
Klasy kluczy i interfejsy
Wszystkie interfejsy API Bluetooth są dostępne w pakiecie android.bluetooth
.
Oto klasy i interfejsy potrzebne do tworzenia połączeń Bluetooth:
BluetoothAdapter
- Reprezentuje lokalny adapter Bluetooth (radio Bluetooth).
BluetoothAdapter
to punkt wejścia wszystkich interakcji Bluetooth. Korzystając z niej, możesz wykrywać inne urządzenia Bluetooth, wysyłać zapytania o listę połączonych (sparowanych) urządzeń, tworzyć instancjeBluetoothDevice
przy użyciu znanego adresu MAC oraz tworzyćBluetoothServerSocket
do nasłuchiwania komunikacji z innych urządzeń. BluetoothDevice
- Reprezentuje zdalne urządzenie Bluetooth. Służy do żądania połączenia z urządzeniem zdalnym za pomocą obiektu
BluetoothSocket
lub wysyłania zapytań dotyczących urządzenia, takich jak jego nazwa, adres, klasa i stan powiązania. BluetoothSocket
- Reprezentuje interfejs gniazda Bluetooth (podobnie jak TCP
Socket
). Umożliwia aplikacji wymianę danych z innym urządzeniem Bluetooth za pomocąInputStream
iOutputStream
. BluetoothServerSocket
- Reprezentuje otwarte gniazdo serwera, które nasłuchuje żądań przychodzących (podobnie jak port TCP
ServerSocket
). Aby można było połączyć 2 urządzenia, jedno z nich musi mieć otwarte gniazdo serwera tej klasy. Gdy zdalne urządzenie Bluetooth wysyła żądanie połączenia z tym urządzeniem, akceptuje je, a potem zwraca połączoneBluetoothSocket
. BluetoothClass
- Opisuje ogólne cechy i możliwości urządzenia Bluetooth. To jest dostępny tylko do odczytu zbiór właściwości, który określa klasy i usługi urządzenia. Te informacje zapewniają przydatne wskazówki dotyczące typu urządzenia, ale atrybuty tej klasy niekoniecznie opisują wszystkie profile i usługi Bluetooth obsługiwane przez urządzenie.
BluetoothProfile
- Interfejs reprezentujący profil Bluetooth. Profil Bluetooth to specyfikacja interfejsu bezprzewodowego do komunikacji między urządzeniami za pomocą Bluetootha. Przykładem może być profil Obsługa bez użycia rąk. Więcej o profilach dowiesz się na stronie Profile Bluetooth.
BluetoothHeadset
- Obsługują zestawy słuchawkowe Bluetooth używane z telefonami komórkowymi. Dotyczy to zarówno profilu zestawu słuchawkowego Bluetooth, jak i profilu zestawu słuchawkowego (v1.5).
BluetoothA2dp
- Określa, jak wysokiej jakości dźwięk może być przesyłany z jednego urządzenia na drugie przez połączenie Bluetooth przy użyciu profilu A2DP (Advanced Audio Distribution Profile).
BluetoothHealth
- Reprezentuje serwer proxy Profilu urządzenia zdrowotnego, który steruje usługą Bluetooth.
BluetoothHealthCallback
- Klasa abstrakcyjna służąca do implementowania wywołań zwrotnych (
BluetoothHealth
). Musisz rozszerzyć tę klasę i zaimplementować metody wywołania zwrotnego, aby otrzymywać informacje o zmianach w stanie rejestracji aplikacji i stanie kanału Bluetooth. BluetoothHealthAppConfiguration
- Reprezentuje konfigurację aplikacji, którą aplikacja innej firmy z Bluetooth Health rejestruje, aby komunikować się ze zdalnym urządzeniem Bluetooth do zarządzania stanem danych.
BluetoothProfile.ServiceListener
- Interfejs powiadamiający klienty komunikacji międzyprocesowej (IPC) firmy
BluetoothProfile
, gdy zostały połączone z usługą wewnętrzną, która obsługuje określony profil, lub od niej rozłączona.