Omówienie Bluetootha

Platforma Androida obsługuje stos sieciowy Bluetooth, który umożliwia urządzeniu bezprzewodową wymianę danych z innymi urządzeniami Bluetooth. Platforma aplikacji zapewnia dostęp do funkcji Bluetooth za pomocą interfejsów API Bluetooth. Te interfejsy API umożliwiają aplikacjom łączenie się z innymi urządzeniami Bluetooth, co pozwala na korzystanie z funkcji bezprzewodowych typu punkt-punkt i wielopunktowych.

Za pomocą interfejsów Bluetooth API aplikacja może:

  • Wyszukaj inne urządzenia Bluetooth.
  • Wysyłanie zapytania do lokalnego adaptera Bluetooth o sparowane urządzenia Bluetooth.
  • ustanawianie kanałów RFCOMM,
  • łączyć się z innymi urządzeniami za pomocą wykrywania usług;
  • Przenoszenie danych na inne urządzenia i z nich.
  • zarządzać wieloma połączeniami,

Ten dokument dotyczy klasycznego Bluetootha. Klasyczny Bluetooth to właściwy wybór w przypadku operacji, które bardziej obciążają baterię, takich jak strumieniowanie i komunikacja między urządzeniami. W przypadku urządzeń Bluetooth o niskim zapotrzebowaniu na energię rozważ użycie połączeń Bluetooth Low Energy.

W tej dokumentacji opisano różne profile Bluetooth i wyjaśniono, jak używać interfejsów Bluetooth API do wykonywania 4 głównych zadań niezbędnych do komunikacji przez Bluetooth:

  • Konfiguruję Bluetooth.
  • znajdowanie urządzeń, które są sparowane lub dostępne w pobliżu;
  • Łączenie urządzeń.
  • Przenoszenie danych między urządzeniami.

Podstawy

Aby urządzenia z obsługą Bluetootha mogły przesyłać dane między sobą, muszą najpierw utworzyć kanał komunikacji w procesie parowania. Jedno urządzenie, czyli urządzenie wykrywalne, udostępnia się dla przychodzących żądań połączenia. Inne urządzenie znajduje urządzenie wykrywalne za pomocą procesu wykrywania usług. Gdy urządzenie wykrywalne zaakceptuje prośbę o sparowanie, oba urządzenia zakończą proces wiązania, podczas którego wymieniają się kluczami bezpieczeństwa. Urządzenia zapisują te klucze w pamięci podręcznej do późniejszego użycia.

Po zakończeniu procesów parowania i łączenia oba urządzenia wymieniają się informacjami. Po zakończeniu sesji urządzenie, które zainicjowało prośbę o sparowanie, zwalnia kanał, który połączył je z urządzeniem wykrywalnym. Urządzenia pozostają jednak powiązane, więc mogą automatycznie połączyć się ponownie podczas kolejnej sesji, o ile znajdują się w swoim zasięgu i żadne z nich nie usunęło powiązania.

Korzystanie z interfejsów Bluetooth API wymaga zadeklarowania kilku uprawnień w pliku manifestu. Następnie otwórz BluetoothAdapter i sprawdź, czy na urządzeniu jest dostępny Bluetooth. Jeśli Bluetooth jest dostępny, wykonaj te 3 czynności:

Niektóre urządzenia używają określonego profilu Bluetooth, który deklaruje, jakie dane udostępnia.

Najważniejsze klasy i interfejsy

Wszystkie interfejsy Bluetooth API są dostępne w pakiecie android.bluetooth. Oto klasy i interfejsy, których potrzebujesz do tworzenia połączeń Bluetooth:

BluetoothAdapter
Reprezentuje lokalną kartę Bluetooth (radio Bluetooth). BluetoothAdapter to punkt wejścia dla wszystkich interakcji Bluetooth. Za pomocą tej klasy możesz wykrywać inne urządzenia Bluetooth, wysyłać zapytania o listę powiązanych (sparowanych) urządzeń, tworzyć instancje BluetoothDevice przy użyciu znanego adresu MAC i tworzyć BluetoothServerSocket do nasłuchiwania komunikacji z innych urządzeń.
BluetoothDevice
Reprezentuje zdalne urządzenie Bluetooth. Użyj tej klasy, aby poprosić o połączenie z urządzeniem zdalnym przez BluetoothSocket lub uzyskać informacje o urządzeniu, takie jak nazwa, adres, klasa i stan powiązania.
BluetoothSocket
Reprezentuje interfejs gniazda Bluetooth (podobny do TCP Socket). Jest to punkt połączenia, który 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 ServerSocket TCP). Aby połączyć 2 urządzenia, jedno z nich musi otworzyć gniazdo serwera za pomocą tej klasy. Gdy zdalne urządzenie Bluetooth wysyła prośbę o połączenie z tym urządzeniem, urządzenie akceptuje połączenie, a następnie zwraca połączone urządzenie BluetoothSocket.
BluetoothClass
Opisuje ogólne cechy i możliwości urządzenia Bluetooth. Jest to zestaw właściwości tylko do odczytu, który definiuje klasy i usługi urządzenia. Chociaż te informacje dają przydatną wskazówkę dotyczącą typu urządzenia, atrybuty tej klasy nie muszą opisywać wszystkich profili i usług Bluetooth obsługiwanych przez urządzenie.
BluetoothProfile
Interfejs reprezentujący profil Bluetooth. Profil Bluetooth to specyfikacja interfejsu bezprzewodowego do komunikacji między urządzeniami przez Bluetooth. Przykładem jest profil obsługiwany bez użycia rąk. Więcej informacji o profilach znajdziesz w artykule Profile Bluetooth.
BluetoothHeadset
Zapewnia obsługę zestawów słuchawkowych Bluetooth, których można używać z telefonami komórkowymi. Obejmuje to zarówno profil zestawu słuchawkowego Bluetooth, jak i profil obsługiwany bez użycia rąk (wersja 1.5).
BluetoothA2dp
Określa, jak dźwięk wysokiej jakości może być przesyłany strumieniowo z jednego urządzenia na drugie przez połączenie Bluetooth przy użyciu profilu Advanced Audio Distribution Profile (A2DP).
BluetoothHealth
Reprezentuje serwer proxy profilu urządzenia medycznego, który steruje usługą Bluetooth.
BluetoothHealthCallback
Klasa abstrakcyjna, której używasz do implementowania wywołań zwrotnych BluetoothHealth. Musisz rozszerzyć tę klasę i zaimplementować metody wywołania zwrotnego, aby otrzymywać aktualizacje o zmianach stanu rejestracji aplikacji i stanu kanału Bluetooth.
BluetoothHealthAppConfiguration
Reprezentuje konfigurację aplikacji, którą aplikacja innej firmy do monitorowania stanu zdrowia przez Bluetooth rejestruje, aby komunikować się ze zdalnym urządzeniem do monitorowania stanu zdrowia przez Bluetooth.
BluetoothProfile.ServiceListener
Interfejs, który powiadamia klientów komunikacji między procesami (IPC) BluetoothProfile o połączeniu z usługą wewnętrzną, która obsługuje dany profil, lub o rozłączeniu z nią.