Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
L'API Bluetooth est compatible avec l'utilisation de profils Bluetooth. A
Le profil Bluetooth est une spécification d'interface sans fil pour
la communication entre les appareils, comme le profil mains libres. Pour un mobile
appareil pour se connecter à un casque sans fil, les deux appareils doivent être compatibles avec le
Profil mains libres.
L'API Bluetooth fournit des implémentations pour les attributs
profils:
Casque : Le profil Casque est compatible avec les casques Bluetooth
utilisés avec
les téléphones portables. Android offre
la classe BluetoothHeadset,
qui est un proxy pour contrôler le service de casque Bluetooth. Cela inclut
pour les casques Bluetooth
et les profils mains libres (v1.5). BluetoothHeadset
inclut la prise en charge des commandes AT. Pour en savoir plus à ce sujet, consultez
Commandes AT spécifiques aux fournisseurs.
A2DP : Le profil A2DP (Advanced Audio Distribution Profile) définit
un son de haute qualité peut être diffusé en streaming d'un appareil à un autre via un
. Android offre
BluetoothA2dp, qui est
un proxy pour contrôler
le service Bluetooth A2DP.
Appareil de santé. Android prend en charge l'appareil de santé Bluetooth
(HDP). Cela vous permet de créer des applis qui communiquent via le Bluetooth
avec des appareils de santé qui prennent en charge le Bluetooth, comme les cardiofréquencemètres, le sang
mètres, thermomètres, balances, etc. Pour obtenir la liste des appareils et
les codes de spécialisation correspondants pour les données de l'appareil, consultez l'article HDP
Données relatives à l'appareil
Spécialisations
Ces valeurs sont également référencées dans la spécification ISO/IEEE 11073-20601 [7].
sous la forme MDC_DEV_SPEC_PROFILE_* dans l'annexe des codes de nomenclature. Pour plus
informations sur le HDP, consultez Health Device Profile.
Voici les étapes de base à suivre pour utiliser un profil:
Utilisez
getProfileProxy()
pour établir une connexion à l'objet proxy de profil associé au
profil. Dans l'exemple suivant, l'objet proxy de profil est une instance de
BluetoothHeadset
Une fois que vous disposez de l'objet proxy de profil, utilisez-le pour surveiller l'état du
connexion et d'effectuer d'autres opérations pertinentes pour ce profil.
L'extrait de code suivant montre comment se connecter à un proxy BluetoothHeadset
afin de contrôler le profil du casque:
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);
Commandes AT spécifiques au fournisseur
Les applications peuvent s'inscrire pour recevoir des diffusions système d'AT prédéfinies et spécifiques au fournisseur.
envoyées par les casques (comme une commande Plantronics +XEVENT). Par exemple :
une application peut recevoir des annonces qui indiquent le niveau de batterie d'un appareil connecté
et pourrait avertir l'utilisateur
ou prendre d'autres mesures si nécessaire. Créer une diffusion
récepteur de
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
pour gérer les commandes AT
spécifiques au fournisseur pour le casque.
Lorsque vous utilisez l'API Bluetooth Health, il est utile de comprendre
concepts:
Source
Un appareil de santé, tel qu'une balance, un glucomètre ou un thermomètre,
transmet des données médicales à un appareil connecté, comme un téléphone ou une tablette Android.
Lavabo
Appareil connecté qui reçoit les données médicales. Dans une application HDP, le
est représenté par un objet BluetoothHealthAppConfiguration.
Enregistrements
Processus utilisé pour enregistrer un récepteur afin de communiquer avec un état particulier
appareil.
Connexion
Processus permettant d'ouvrir un canal entre un appareil de santé (source) et un
appareil connecté (récepteur).
Créer une application HDP
Voici les étapes de base de la création d'une application HDP:
Obtenez une référence à l'objet de proxy BluetoothHealth. Comme pour les
casque et appareils avec profil A2DP, vous devez appeler getProfileProxy() avec un
BluetoothProfile.ServiceListener et les
Type de profil HEALTH
pour établir une connexion
avec l'objet proxy de profil.
Créer un BluetoothHealthCallback et enregistrer une configuration d'application
(BluetoothHealthAppConfiguration) qui sert de récepteur de santé.
Établissez une connexion à un appareil de santé.
Une fois connecté à un appareil Santé, lire et écrire sur l'appareil
appareil à l'aide du descripteur de fichier. Les données reçues doivent être interprétées
à l'aide d'un gestionnaire d'état, qui met en œuvre la norme IEEE 11073
caractéristiques.
Lorsque vous avez terminé, fermez le canal Santé et annulez l'enregistrement de l'application. La chaîne
se ferme en cas d'inactivité prolongée
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[null,null,["Dernière mise à jour le 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."]]