Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Interfejs API Bluetooth obsługuje również pracę z profilami Bluetooth. O
Profil Bluetooth to specyfikacja interfejsu bezprzewodowego do
komunikacji między urządzeniami, na przykład profilu obsługi bez użycia rąk. Na urządzeniu mobilnym
aby połączyć się z bezprzewodowym zestawem słuchawkowym, oba urządzenia muszą obsługiwać
Profil obsługi bez użycia rąk.
Interfejs API Bluetooth udostępnia implementacje dla następujących urządzeń Bluetooth
profile:
Zestaw słuchawkowy. Profil zestawu słuchawkowego obsługuje zestawy słuchawkowe Bluetooth,
stosowanych na telefonach komórkowych. Android zapewnia
BluetoothHeadset zajęcia,
który służy do sterowania usługą zestawu słuchawkowego Bluetooth. Obejmuje to m.in.
oraz profile zestawu słuchawkowego Bluetooth i zestawu głośnomówiącego (wersja 1.5). BluetoothHeadset
class obejmuje obsługę poleceń AT. Więcej informacji na ten temat znajdziesz na stronie
Polecenia AT dotyczące konkretnego dostawcy.
A2DP, Profil zaawansowanej dystrybucji dźwięku (A2DP) określa sposób
wysokiej jakości dźwięk może być przesyłany z jednego urządzenia na drugie przez Bluetooth.
połączenia. Android zapewnia
BluetoothA2dp, czyli
serwer proxy do sterowania usługą Bluetooth A2DP.
Urządzenie zdrowotne. Android zapewnia obsługę Bluetooth Health Device
Profil (HDP). Dzięki temu możesz tworzyć aplikacje komunikujące się przez Bluetooth
na urządzenia zdrowotne obsługujące Bluetooth, takie jak pulsometr,
metry, termometry, wagi itd. Listę obsługiwanych urządzeń znajdziesz
odpowiednie kody specjalizacji w zakresie danych z urządzeń znajdziesz tutaj
Dane urządzenia
Specjalizacje.
Wartości te znajdują się też w specyfikacji ISO/IEEE 11073-20601 [7].
jako MDC_DEV_SPEC_PROFILE_* w załączniku do kodeksów nomenklatury. Więcej
informacje na temat HDP: patrz Profil urządzenia zdrowotnego.
Podstawowe czynności, które należy wykonać, aby pracować z profilem:
Używaj
getProfileProxy()
nawiązać połączenie z obiektem serwera proxy profilu powiązanym z
profil. W poniższym przykładzie obiekt serwera proxy profilu jest instancją
BluetoothHeadset
Gdy masz już obiekt serwera proxy profilu, używaj go do monitorowania stanu
i wykonywać inne operacje związane z tym profilem.
Ten fragment kodu pokazuje, jak nawiązać połączenie z serwerem proxy BluetoothHeadset
możesz sterować profilem zestawu słuchawkowego:
Kotlin
varbluetoothHeadset:BluetoothHeadset? =null// Get the default adaptervalbluetoothAdapter:BluetoothAdapter? =BluetoothAdapter.getDefaultAdapter()privatevalprofileListener=object:BluetoothProfile.ServiceListener{overridefunonServiceConnected(profile:Int,proxy:BluetoothProfile){if(profile==BluetoothProfile.HEADSET){bluetoothHeadset=proxyasBluetoothHeadset}}overridefunonServiceDisconnected(profile:Int){if(profile==BluetoothProfile.HEADSET){bluetoothHeadset=null}}}// Establish connection to the proxy.bluetoothAdapter?.getProfileProxy(context,profileListener,BluetoothProfile.HEADSET)// ... call functions on bluetoothHeadset// Close proxy connection after use.bluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET,bluetoothHeadset)
Java
BluetoothHeadsetbluetoothHeadset;// Get the default adapterBluetoothAdapterbluetoothAdapter=BluetoothAdapter.getDefaultAdapter();privateBluetoothProfile.ServiceListenerprofileListener=newBluetoothProfile.ServiceListener(){publicvoidonServiceConnected(intprofile,BluetoothProfileproxy){if(profile==BluetoothProfile.HEADSET){bluetoothHeadset=(BluetoothHeadset)proxy;}}publicvoidonServiceDisconnected(intprofile){if(profile==BluetoothProfile.HEADSET){bluetoothHeadset=null;}}};// Establish connection to the proxy.bluetoothAdapter.getProfileProxy(context,profileListener,BluetoothProfile.HEADSET);// ... call functions on bluetoothHeadset// Close proxy connection after use.bluetoothAdapter.closeProfileProxy(bluetoothHeadset);
Polecenia AT dotyczące konkretnego dostawcy
Aplikacje mogą się rejestrować, aby odbierać komunikaty systemowe ze wstępnie zdefiniowanej grupy AT (AT) konkretnego dostawcy
polecenia wysyłane przez zestawy słuchawkowe (np. polecenie Plantronics +XEVENT). Przykład:
aplikacja może otrzymywać komunikaty wskazujące poziom naładowania baterii połączonego urządzenia
i może powiadomić użytkownika lub podjąć inne działania w razie potrzeby. Utwórz transmisję
dla
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
obsługi specyficznych dla dostawcy poleceń AT dla zestawu słuchawkowego.
Podczas korzystania z interfejsu Bluetooth Health API warto znać klucz HDP
koncepcje:
Źródło
urządzenie zdrowotne, takie jak waga, glukometr lub termometr,
przesyła dane medyczne do urządzenia typu smart, takiego jak telefon lub tablet z Androidem.
Umywalka
Urządzenie, które odbiera dane medyczne. W aplikacji HDP
ujście jest reprezentowane przez obiekt BluetoothHealthAppConfiguration.
Rejestracja
Proces rejestracji ujścia na potrzeby komunikacji z określonym stanem zdrowia
urządzenia.
Połączenie
Proces służący do otwarcia kanału między urządzeniem do dbania o zdrowie (źródło)
urządzenia (zlewu).
Tworzenie aplikacji HDP
Oto podstawowe kroki potrzebne do utworzenia aplikacji HDP:
Uzyskaj odwołanie do obiektu serwera proxy BluetoothHealth. Tak jak zwykłe
zestaw słuchawkowy i urządzenia z profilem A2DP, musisz zadzwonić pod numer getProfileProxy(), podając
BluetoothProfile.ServiceListener oraz
Typ profilu HEALTH
, aby nawiązać połączenie z obiektem serwera proxy profilu.
Utwórz BluetoothHealthCallback i zarejestruj konfigurację aplikacji
(BluetoothHealthAppConfiguration), który pełni funkcję zlewu.
Nawiąż połączenie z urządzeniem zdrowotnym.
Po połączeniu z urządzeniem do dbania o zdrowie odczytuj i zapisuj w tej usłudze
za pomocą deskryptora pliku. Uzyskane dane muszą zostać zinterpretowane
z pomocą menedżera ds. stanu, który wdrożył IEEE 11073
specyfikacji.
Gdy skończysz, zamknij kanał dotyczący zdrowia i wyrejestruj aplikację. Kanał zawiera też
Zamyka się w przypadku długotrwałego braku aktywności.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Bluetooth profiles\n\nThe Bluetooth API includes support for working with Bluetooth profiles. A\nBluetooth profile is a wireless interface specification for Bluetooth-based\ncommunication between devices, such as the Hands-Free profile. For a mobile\ndevice to connect to a wireless headset, both devices must support the\nHands-Free profile.\n\nThe Bluetooth API provides implementations for the following Bluetooth\nprofiles:\n\n- **Headset** . The Headset profile provides support for Bluetooth headsets to be used with mobile phones. Android provides the [`BluetoothHeadset`](/reference/android/bluetooth/BluetoothHeadset) class, which is a proxy for controlling the Bluetooth Headset Service. This includes both Bluetooth Headset and Hands-Free (v1.5) profiles. The `BluetoothHeadset` class includes support for AT commands. For more on this topic, see [Vendor-specific AT commands](#at-commands).\n- **A2DP** . The Advanced Audio Distribution Profile (A2DP) profile defines how high-quality audio can be streamed from one device to another over a Bluetooth connection. Android provides the [`BluetoothA2dp`](/reference/android/bluetooth/BluetoothA2dp) class, which is a proxy for controlling the Bluetooth A2DP Service.\n- **Health Device** . Android provides support for the Bluetooth Health Device Profile (HDP). This lets you create apps that use Bluetooth to communicate with health devices that support Bluetooth, such as heart-rate monitors, blood meters, thermometers, scales, and so on. For a list of supported devices and their corresponding device data specialization codes, see [Bluetooth's HDP\n Device Data\n Specializations](https://www.bluetooth.com/specifications/assigned-numbers/health-device-profile). These values are also referenced in the ISO/IEEE 11073-20601 \\[7\\] specification as `MDC_DEV_SPEC_PROFILE_*` in the Nomenclature Codes Annex. For more information about HDP, see [Health Device Profile](#health-profile).\n\nHere are the basic steps for working with a profile:\n\n1. Get the default adapter, as described in [Bluetooth setup](/develop/connectivity/bluetooth/setup).\n2. Set up a [`BluetoothProfile.ServiceListener`](/reference/android/bluetooth/BluetoothProfile.ServiceListener). This listener notifies [`BluetoothProfile`](/reference/android/bluetooth/BluetoothProfile) clients when they have been connected to or disconnected from the service.\n3. Use [`getProfileProxy()`](/reference/android/bluetooth/BluetoothAdapter#getProfileProxy(android.content.Context,%20android.bluetooth.BluetoothProfile.ServiceListener,%20int)) to establish a connection to the profile proxy object associated with the profile. In the following example, the profile proxy object is an instance of `BluetoothHeadset`.\n4. In [`onServiceConnected()`](/reference/android/bluetooth/BluetoothProfile.ServiceListener#onServiceConnected(int,%20android.bluetooth.BluetoothProfile)), get a handle to the profile proxy object.\n5. Once you have the profile proxy object, use it to monitor the state of the connection and perform other operations that are relevant to that profile.\n\nThe following code snippet shows how to connect to a `BluetoothHeadset` proxy\nobject so that you can control the Headset profile: \n\n### Kotlin\n\n```kotlin\nvar bluetoothHeadset: BluetoothHeadset? = null\n\n// Get the default adapter\nval bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()\n\nprivate val profileListener = object : BluetoothProfile.ServiceListener {\n\n override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = proxy as BluetoothHeadset\n }\n }\n\n override fun onServiceDisconnected(profile: Int) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = null\n }\n }\n}\n\n// Establish connection to the proxy.\nbluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET)\n\n// ... call functions on bluetoothHeadset\n\n// Close proxy connection after use.\nbluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)\n```\n\n### Java\n\n```java\nBluetoothHeadset bluetoothHeadset;\n\n// Get the default adapter\nBluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();\n\nprivate BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() {\n public void onServiceConnected(int profile, BluetoothProfile proxy) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = (BluetoothHeadset) proxy;\n }\n }\n public void onServiceDisconnected(int profile) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = null;\n }\n }\n};\n\n// Establish connection to the proxy.\nbluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET);\n\n// ... call functions on bluetoothHeadset\n\n// Close proxy connection after use.\nbluetoothAdapter.closeProfileProxy(bluetoothHeadset);\n```\n\n### Vendor-specific AT commands\n\nApps can register to receive system broadcasts of predefined vendor-specific AT\ncommands sent by headsets (such as a Plantronics +XEVENT command). For example,\nan app could receive broadcasts that indicate a connected device's battery level\nand could notify the user or take other action as needed. Create a broadcast\nreceiver for the\n[`ACTION_VENDOR_SPECIFIC_HEADSET_EVENT`](/reference/android/bluetooth/BluetoothHeadset#ACTION_VENDOR_SPECIFIC_HEADSET_EVENT)\nintent to handle vendor-specific AT commands for the headset.\n\nHealth Device Profile\n---------------------\n\nAndroid supports the Bluetooth Health Device Profile (HDP). The Bluetooth Health\nAPI includes the classes\n[`BluetoothHealth`](/reference/android/bluetooth/BluetoothHealth),\n[`BluetoothHealthCallback`](/reference/android/bluetooth/BluetoothHealthCallback),\nand\n[`BluetoothHealthAppConfiguration`](/reference/android/bluetooth/BluetoothHealthAppConfiguration),\nwhich are described in [Key classes and\ninterfaces](/develop/connectivity/bluetooth#key-classes).\n| **Caution:** The Health Device Profile (HDP) and MCAP protocols are no longer used. New apps should use Bluetooth Low Energy based solutions such as [`BluetoothGatt`](/reference/android/bluetooth/BluetoothGatt), [`BluetoothAdapter.listenUsingL2capChannel()`](/reference/android/bluetooth/BluetoothAdapter#listenUsingL2capChannel()), or [`BluetoothDevice#createL2capChannel(int)`](/reference/android/bluetooth/BluetoothDevice#createL2capChannel(int)).\n\nWhen using the Bluetooth Health API, it's helpful to understand these key HDP\nconcepts:\n\nSource\n: A health device, such as a weight scale, glucose meter, or thermometer, which\n transmits medical data to a smart device, such as an Android phone or tablet.\n\nSink\n: The smart device that receives the medical data. In an HDP app, the\n sink is represented by a `BluetoothHealthAppConfiguration` object.\n\nRegistration\n: The process used to register a sink for communicating with a particular health\n device.\n\nConnection\n: The process used to open a channel between a health device (source) and a\n smart device (sink).\n\n### Create an HDP app\n\nHere are the basic steps involved in creating an HDP app:\n\n1. Get a reference to the `BluetoothHealth` proxy object. As with regular\n headset and A2DP profile devices, you must call `getProfileProxy()` with a\n `BluetoothProfile.ServiceListener` and the\n [`HEALTH`](/reference/android/bluetooth/BluetoothProfile#HEALTH) profile type\n to establish a connection with the profile proxy object.\n\n2. Create a `BluetoothHealthCallback` and register an app configuration\n (`BluetoothHealthAppConfiguration`) that acts as a health sink.\n\n3. Establish a connection to a health device.\n\n | **Note:** Some devices initiate the connection automatically. It is unnecessary to carry out this step for those devices.\n4. When connected successfully to a health device, read and write to the health\n device using the file descriptor. The received data needs to be interpreted\n using a health manager, which implements the [IEEE 11073\n specifications](https://standards.ieee.org/standard/11073-10207-2017.html).\n\n5. When done, close the health channel and unregister the app. The channel also\n closes when there is extended inactivity."]]