Omówienie Bluetootha

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:

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ć instancje BluetoothDevice 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 i OutputStream.
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łączone BluetoothSocket.
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.