Perfiles de Bluetooth

La API de Bluetooth admite el trabajo con perfiles de Bluetooth. R El perfil de Bluetooth es una especificación de interfaz inalámbrica para conexiones Bluetooth la comunicación entre dispositivos, como el perfil de manos libres. Para dispositivos móviles para conectarse a auriculares inalámbricos, ambos dispositivos deben ser compatibles con Perfil de manos libres.

La API de Bluetooth ofrece implementaciones para los siguientes dispositivos Bluetooth perfiles:

  • Auriculares El perfil de auriculares permite usar los auriculares Bluetooth que se usan con teléfonos celulares. Android proporciona la clase BluetoothHeadset, que es un proxy para controlar el servicio de auriculares Bluetooth. Esto incluye perfiles de manos libres (v1.5) y auriculares Bluetooth. El BluetoothHeadset incluye compatibilidad con comandos de AT. Para obtener más información sobre este tema, consulta Comandos de AT específicos del proveedor.
  • A2DP El perfil de distribución de audio avanzada (A2DP) define la manera en que Se puede transmitir audio de alta calidad de un dispositivo a otro a través de Bluetooth. conexión. Android proporciona la BluetoothA2dp, que es un proxy para controlar el servicio de A2DP de Bluetooth.
  • Dispositivo de salud. Android admite el dispositivo de salud Bluetooth Perfil (HDP). Esta opción te permite crear apps que se comunican mediante Bluetooth en dispositivos de salud compatibles con Bluetooth, como monitores de frecuencia cardíaca, medidores, termómetros, básculas, etcétera. Para obtener una lista de los dispositivos los códigos de especialización de datos del dispositivo correspondientes; consulta el HDP de Bluetooth Datos del dispositivo Especializaciones. También se hace referencia a estos valores en la especificación ISO/IEEE 11073-20601 [7] como MDC_DEV_SPEC_PROFILE_* en el Anexo de Códigos de Nomenclatura. Para ver más para obtener información sobre el HDP, consulta Perfil de dispositivos de salud.

A continuación, se detallan los pasos básicos para trabajar con un perfil:

  1. Obtén el adaptador predeterminado, como se describe en Configuración de Bluetooth:
  2. Configura un BluetoothProfile.ServiceListener Este objeto de escucha notifica BluetoothProfile clientes cuando se hayan conectado al servicio o desconectado de él.
  3. Usa getProfileProxy() para establecer una conexión con el objeto del proxy de perfil asociado al perfil. En el siguiente ejemplo, el objeto del proxy de perfil es una instancia de BluetoothHeadset
  4. En onServiceConnected(): para obtener un handle para el objeto del proxy de perfil.
  5. Una vez que tienes el objeto del proxy de perfil, úsalo para supervisar el estado del y realizar otras operaciones relevantes para ese perfil.

En el siguiente fragmento de código, se muestra cómo conectarse a un proxy BluetoothHeadset objeto para que puedas controlar el perfil de auriculares:

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 de AT específicos del proveedor

Las apps se pueden registrar para recibir transmisiones del sistema de AT específicas de los proveedores comandos enviados por auriculares (como un comando +XEVENT de Plantronics). Por ejemplo: una app puede recibir transmisiones que indiquen el nivel de batería de un dispositivo conectado y podrían notificar al usuario o tomar otras medidas según sea necesario. Crear una transmisión receptor de la ACTION_VENDOR_SPECIFIC_HEADSET_EVENT para manejar los comandos de AT específicos del proveedor para los auriculares.

Perfil de dispositivos de salud

Android admite el perfil de dispositivos de salud (HDP) Bluetooth. Estado de Bluetooth incluye las clases BluetoothHealth: BluetoothHealthCallback, y BluetoothHealthAppConfiguration, que se describen en Clases clave y interfaces.

Cuando se usa la API de Bluetooth Health, es útil comprender estos HDP clave conceptos:

Fuente
Un dispositivo de salud, como una báscula, un glucosímetro o un termómetro, que transmite datos médicos a un dispositivo inteligente, como un teléfono o una tablet Android.
Receptor
El dispositivo inteligente que recibe los datos médicos En una aplicación del HDP, el receptor se representa con un objeto BluetoothHealthAppConfiguration.
Registro
El proceso que se usa para registrar un receptor a fin de comunicarse con una salud en particular dispositivo.
Conexión
Es el proceso que se usa para abrir un canal entre un dispositivo de salud (fuente) y un dispositivo inteligente (receptor).

Cómo crear una app del HDP

Estos son los pasos básicos que debes seguir para crear una app del HDP:

  1. Obtén una referencia al objeto del proxy BluetoothHealth. Al igual que con los clientes auriculares y dispositivos de perfil A2DP, debes llamar a getProfileProxy() con un BluetoothProfile.ServiceListener y las Tipo de perfil de HEALTH para establecer una conexión con el objeto del proxy de perfil.

  2. Crea un BluetoothHealthCallback y registra una configuración de app (BluetoothHealthAppConfiguration) que actúa como receptor de estado.

  3. Establece una conexión con el dispositivo de salud.

  4. Cuando te conectes correctamente a un dispositivo de salud, lee el archivo de salud y escribe en él usando el descriptor de archivos. Los datos recibidos deben interpretarse con un administrador de salud, que implementa la norma IEEE 11073 especificaciones del producto.

  5. Cuando hayas terminado, cierra el canal de salud y cancela el registro de la app. El canal también se cierra cuando hay inactividad por tiempo prolongado.