Perfis Bluetooth

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:

  1. Use o adaptador padrão, conforme descrito em Configuração do Bluetooth.
  2. Configure um BluetoothProfile.ServiceListener Esse listener notifica BluetoothProfile clientes quando o dispositivo foi conectado ou desconectado do serviço.
  3. 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:
  4. Em onServiceConnected(), recebe um handle para o objeto de proxy de perfil.
  5. 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

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 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.

Perfil Health Device

O Android oferece suporte ao Perfil de Dispositivo Saúde do Bluetooth (HDP, na sigla em inglês). A integridade do Bluetooth A API inclui as classes BluetoothHealth, BluetoothHealthCallback, e BluetoothHealthAppConfiguration, que são descritos em Classes principais e de código aberto.

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:

  1. 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.

  2. Criar um BluetoothHealthCallback e registrar uma configuração de app (BluetoothHealthAppConfiguration) que atua como um coletor de integridade.

  3. Estabeleça uma conexão a um dispositivo de saúde.

  4. 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.

  5. 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.