Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A API Bluetooth inclui suporte para trabalhar com perfis Bluetooth. Um
O perfil Bluetooth é uma especificação de interface sem fio
comunicação entre dispositivos, como o perfil de viva-voz. Para dispositivos móveis
para se conectar a um fone de ouvido sem fio, os dois dispositivos devem ter suporte ao
Perfil de viva-voz.
A API Bluetooth fornece implementações para os seguintes tipos de conexão
perfis:
Fone de ouvido. O perfil Headset permite que fones de ouvido Bluetooth sejam
usados com celulares. O Android oferece
BluetoothHeadset,
que é um proxy para controlar o serviço de fones de ouvido Bluetooth. Isso inclui
para os perfis Bluetooth Headset e Hands-Free (v1.5). O BluetoothHeadset
inclui suporte para comandos AT. Para saber mais sobre esse assunto, consulte
Comandos AT específicos do fornecedor.
A2DP (link em inglês). O perfil Advanced Audio Distribution Profile (A2DP) define como
áudio de alta qualidade pode ser transmitido de um dispositivo para outro através de um Bluetooth
uma conexão com a Internet. O Android oferece
classe BluetoothA2dp, que é
um proxy para controlar o Bluetooth A2DP Service.
Dispositivo de saúde. O Android oferece suporte ao Bluetooth Health Device
do usuário (HDP). Isso permite criar apps que usam Bluetooth para se comunicar
com dispositivos de saúde compatíveis com Bluetooth, como monitores de frequência cardíaca,
metros, termômetros, balanças e assim por diante. Para uma lista de dispositivos e
os códigos de especialização de dados do dispositivo correspondentes, consulte HDP do Bluetooth
Dados do dispositivo
Especializações.
Esses valores também são referenciados na especificação ISO/IEEE 11073-20601 [7]
como MDC_DEV_SPEC_PROFILE_* no Anexo de Códigos de Nomenclatura. Para mais
informações sobre HDP, consulte Perfil de dispositivo médico.
Veja a seguir as etapas básicas para trabalhar com um perfil:
Usar
getProfileProxy()
para estabelecer uma conexão com o objeto de proxy de perfil associado ao
perfil. No exemplo a seguir, o objeto de proxy de perfil é uma instância do
BluetoothHeadset:
Assim que você tiver o objeto de proxy do perfil, use-o para monitorar o estado da
e realizar outras operações relevantes para esse perfil.
O snippet de código a seguir mostra como se conectar a um proxy BluetoothHeadset
para que você possa controlar o perfil Headset:
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);
Comandos AT específicos de fornecedores
Os aplicativos podem se registrar para receber transmissões do sistema de TAs predefinidas específicas de fornecedores
comandos enviados por fones de ouvido (como um comando +XEVENT da Plantronics). Por exemplo:
um aplicativo pode receber transmissões que indicam o nível de bateria de um dispositivo conectado
além de notificar o usuário
ou realizar outras ações conforme necessário. Criar uma transmissão
para o
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
para lidar com comandos AT específicos do fornecedor para o fone de ouvido.
Ao usar a API Bluetooth Health, é útil entender esses principais HDPs
conceitos importantes:
Origem
Um dispositivo de saúde, como uma balança, um medidor de glicose ou um termômetro, que
transmite dados médicos para um dispositivo inteligente, como um smartphone ou tablet Android.
Coletor
O dispositivo inteligente que recebe os dados médicos. Em um app HDP,
o coletor é representado por um objeto BluetoothHealthAppConfiguration.
Registro
O processo usado para registrar um coletor para se comunicar com uma saúde específica
dispositivo.
Conexão
O processo usado para abrir um canal entre um dispositivo de saúde (fonte) e um
dispositivo inteligente (coletor).
Criar um app HDP
Veja as etapas básicas envolvidas na criação de um app HDP:
Acesse uma referência ao objeto de proxy BluetoothHealth. Assim como acontece
fone de ouvido e dispositivos com perfil A2DP, será necessário chamar getProfileProxy() com um
BluetoothProfile.ServiceListener e o
Tipo de perfil do HEALTH
para estabelecer uma conexão com o objeto de proxy do perfil.
Criar um BluetoothHealthCallback e registrar uma configuração de app
(BluetoothHealthAppConfiguration) que atua como um coletor de integridade.
Estabeleça uma conexão a um dispositivo de saúde.
Quando conectado a um dispositivo de saúde, leia e grave no
usando o descritor de arquivo. Os dados recebidos precisam ser interpretados
usando um gerenciador de saúde, que implementa a norma IEEE 11073
especificações.
Quando terminar, feche o canal de saúde e cancele a inscrição do app. O canal também
fecha quando há um longo período de inatividade.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 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."]]