A API Bluetooth é compatível com perfis Bluetooth. Um perfil Bluetooth é uma especificação de interface sem fio para comunicação por Bluetooth entre dispositivos, como o perfil Hands-Free. Para que um dispositivo móvel se conecte a um fone de ouvido sem fio, os dois dispositivos precisam oferecer suporte ao perfil viva-voz.
A API Bluetooth oferece implementações para os seguintes perfis Bluetooth:
- Fone de ouvido. O perfil Headset oferece suporte para fones de ouvido Bluetooth serem
usados com smartphones. O Android oferece a classe
BluetoothHeadset
, que é um proxy para controlar o Bluetooth Headset Service. Isso inclui os perfis Bluetooth Headset e Hands-Free (v1.5). A classeBluetoothHeadset
inclui suporte para comandos AT. Para saber mais sobre esse tópico, consulte Comandos AT específicos do fornecedor. - A2DP: O perfil Advanced Audio Distribution Profile (A2DP) define como
fazer streaming de áudio de alta qualidade de um dispositivo para outro por uma conexão
Bluetooth. O Android oferece a classe
BluetoothA2dp
, que é um proxy para controlar o serviço Bluetooth A2DP. - Dispositivo de saúde. O Android oferece suporte ao Perfil de dispositivo
Saúde (HDP) Bluetooth. Esse recurso permite criar apps que usam o Bluetooth para comunicação
com dispositivos de saúde compatíveis com Bluetooth, como monitores de frequência cardíaca, medidores
de sangue, termômetros, balanças etc. Para conferir uma lista de dispositivos com suporte e
os códigos de especialização de dados correspondentes, consulte Especializações de
dados do dispositivo HDP
do Bluetooth.
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 o HDP, consulte Perfil Health Device.
Veja a seguir as etapas básicas para trabalhar com um perfil:
- Use o adaptador padrão, conforme descrito em Configuração do Bluetooth.
- Configure um
BluetoothProfile.ServiceListener
. Ele notifica os clientesBluetoothProfile
quando eles são conectados ou desconectados do serviço. - Use
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 deBluetoothHeadset
. - Em
onServiceConnected()
, consiga um handle para o objeto de proxy de perfil. - Quando você tiver o objeto de proxy de perfil, use-o para monitorar o estado da conexão e executar outras operações relevantes para esse perfil.
O snippet de código a seguir mostra como se conectar a um objeto de proxy BluetoothHeadset
para que você possa controlar o perfil Headset:
Kotlin
var bluetoothHeadset: BluetoothHeadset? = null // Get the default adapter val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter() private val profileListener = object : BluetoothProfile.ServiceListener { override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = proxy as BluetoothHeadset } } override fun onServiceDisconnected(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
BluetoothHeadset bluetoothHeadset; // Get the default adapter BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); private BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; } } public void onServiceDisconnected(int profile) { 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 apps podem se registrar para receber transmissões do sistema de comandos AT predefinidos
específicos do fornecedor enviados por fones de ouvido (como um comando +XEVENT da Plantronics). Por exemplo,
um app pode receber transmissões que indicam o nível de bateria de um dispositivo conectado
e pode notificar o usuário ou realizar outra ação, conforme necessário. Crie um broadcast
receiver para a intent
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
para processar comandos AT específicos do fornecedor para o fone de ouvido.
Perfil Health Device
O Android oferece suporte ao perfil Health Device (HDP) do Bluetooth. A API Bluetooth
Health inclui as classes
BluetoothHealth
,
BluetoothHealthCallback
e
BluetoothHealthAppConfiguration
,
descritas em Principais classes e
interfaces.
Ao usar a API Bluetooth Health, é útil entender estes conceitos importantes do HDP:
- Fonte
- 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 dados médicos. Em um app HDP, o
coletor é representado por um objeto
BluetoothHealthAppConfiguration
. - Registro
- Processo usado para registrar um coletor e se comunicar com um dispositivo de saúde específico.
- 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:
Consiga uma referência para o objeto de proxy
BluetoothHealth
. Assim como acontece com os dispositivos com perfil normal e A2DP, você precisa chamargetProfileProxy()
com umBluetoothProfile.ServiceListener
e o tipo de perfilHEALTH
para estabelecer uma conexão com o objeto de proxy de perfil.Crie um
BluetoothHealthCallback
e registre uma configuração de app (BluetoothHealthAppConfiguration
) que funcione como 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 dispositivo de saúde usando o descritor de arquivos. Os dados recebidos precisam ser interpretados usando um gerenciador de integridade, que implementa as especificações IEEE 11073.
Quando terminar, feche o canal de saúde e cancele a inscrição do app. O canal também será fechado quando houver inatividade prolongada.