Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
L'API Bluetooth include il supporto per lavorare con i profili Bluetooth. R
Il profilo Bluetooth è una specifica di interfaccia wireless per le
la comunicazione tra dispositivi, ad esempio il profilo in vivavoce. Per un dispositivo mobile
dispositivo per il collegamento a una cuffia wireless, entrambi i dispositivi devono supportare il
Profilo in vivavoce.
L'API Bluetooth fornisce implementazioni per le seguenti
profili:
Auricolari. Il profilo Cuffie supporta le cuffie Bluetooth
utilizzati con i cellulari. Android offre
BluetoothHeadset,
che è un proxy per controllare il servizio cuffie Bluetooth. Sono inclusi
profili Auricolare Bluetooth e Vivavoce (v1.5). BluetoothHeadset
supporta i comandi AT. Per ulteriori informazioni su questo argomento, vedi
Comandi AT specifici del fornitore.
A2DP. Il profilo A2DP (Advanced Audio Distribution Profile) definisce la modalità
audio di alta qualità può essere riprodotto in streaming da un dispositivo all'altro tramite Bluetooth
connessione. Android offre
BluetoothA2dp, ovvero
un proxy per il controllo del servizio Bluetooth A2DP.
Dispositivo sanitario. Android fornisce il supporto per Bluetooth Health Device
Profilo (HDP). In questo modo puoi creare app che utilizzano il Bluetooth per comunicare
con dispositivi sanitari che supportano il Bluetooth, come dispositivi per il monitoraggio del battito cardiaco,
metri, termometri, bilance e così via. Per un elenco dei dispositivi supportati e
i codici di specializzazione per i dati del dispositivo corrispondenti, vedi HDP del Bluetooth
Dati dispositivo
Specializzazioni.
Questi valori sono riportati anche nelle specifiche ISO/IEEE 11073-20601 [7].
come MDC_DEV_SPEC_PROFILE_* nell'Allegato ai codici di nomenclatura. Per ulteriori informazioni
informazioni su HDP, vedi Profilo del dispositivo sanitario.
Di seguito sono riportati i passaggi di base per lavorare con un profilo:
Utilizza le funzionalità di
getProfileProxy()
per stabilire una connessione all'oggetto proxy del profilo associato al
profilo. Nell'esempio seguente, l'oggetto proxy del profilo è un'istanza di
BluetoothHeadset.
Una volta ottenuto l'oggetto proxy del profilo, utilizzalo per monitorare lo stato del
connessione ed eseguire altre operazioni pertinenti a quel profilo.
Il seguente snippet di codice mostra come connettersi a un proxy BluetoothHeadset
per controllare il profilo Cuffie:
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);
Comandi AT specifici del fornitore
Le app possono registrarsi per ricevere trasmissioni di sistema di AT predefiniti del fornitore
comandi inviati dagli auricolari (come un comando Plantronics +XEVENT). Ad esempio:
un'app potrebbe ricevere annunci che indicano il livello della batteria di un dispositivo connesso
e avvisare l'utente o intraprendere altre azioni, se necessario. Crea una trasmissione
ricevitore per
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
per gestire i comandi AT specifici del fornitore per il visore.
Quando utilizzi l'API Bluetooth Health, è utile comprendere questi HDP chiave
di base:
Origine
Un dispositivo per la salute, come una bilancia, un misuratore della glicemia o un termometro, che
trasmette dati medici a uno smart device, come uno smartphone o un tablet Android.
Lavello
Lo smart device che riceve i dati medici. In un'app HDP,
il sink è rappresentato da un oggetto BluetoothHealthAppConfiguration.
Registrazione
La procedura utilizzata per registrare un sink per comunicare con un determinato stato di salute
.
Connessione
La procedura utilizzata per aprire un canale tra un dispositivo sanitario (fonte) e un
smart device (lavandino).
Crea un'app HDP
Di seguito sono riportati i passaggi di base per la creazione di un'app HDP:
Ottieni un riferimento all'oggetto proxy BluetoothHealth. Come per i normali
cuffie e dispositivi con profilo A2DP, devi chiamare getProfileProxy() con un
BluetoothProfile.ServiceListener e
Tipo di profilo HEALTH
per stabilire una connessione con l'oggetto proxy del profilo.
Crea un BluetoothHealthCallback e registra una configurazione dell'app
(BluetoothHealthAppConfiguration) che funge da sink di integrità.
Stabilisci una connessione a un dispositivo per la salute.
Se connesso correttamente a un dispositivo sanitario, leggi e scrivi sullo stato
dispositivo utilizzando il descrittore del file. I dati ricevuti devono essere interpretati
utilizzando un responsabile sanitario, che implementa lo standard IEEE 11073
specifiche.
Al termine, chiudi il canale Salute e annulla la registrazione dell'app. Inoltre, il canale
si chiude in caso di inattività prolungata.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[null,null,["Ultimo aggiornamento 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."]]