La plataforma de Android incluye compatibilidad con la pila de red de Bluetooth, que permite que un dispositivo intercambie datos de forma inalámbrica con otros dispositivos Bluetooth. El framework de la app proporciona acceso a la funcionalidad de Bluetooth a través de las APIs de Bluetooth. Estas APIs permiten que las apps se conecten a otros dispositivos Bluetooth, lo que habilita las funciones inalámbricas punto a punto y multipunto.
Con las APIs de Bluetooth, una app puede hacer lo siguiente:
- Busca otros dispositivos Bluetooth.
- Consultar el adaptador Bluetooth local para obtener los dispositivos Bluetooth vinculados
- Establecer canales de RFCOMM
- Conectarse a otros dispositivos a través del descubrimiento de servicios
- Transferir datos desde y hacia otros dispositivos
- Administrar varias conexiones
Este documento se enfoca en el Bluetooth clásico. La tecnología Bluetooth clásica es la opción correcta para las operaciones que consumen más batería, como la transmisión y la comunicación entre dispositivos. Para dispositivos Bluetooth con requisitos de bajo consumo, considera usar conexiones Bluetooth de bajo consumo.
En esta documentación, se describen diferentes perfiles de Bluetooth y se explica cómo usar las APIs de Bluetooth para realizar las cuatro tareas principales necesarias para comunicarse con Bluetooth:
- Configurando Bluetooth.
- Buscar dispositivos que estén vinculados o disponibles en el área local
- Conectando dispositivos.
- Transferir datos entre dispositivos
Conceptos básicos
Para que los dispositivos con Bluetooth puedan transmitir datos entre sí, primero deben formar un canal de comunicación mediante un proceso de vinculación. Un dispositivo, el detectable, se pone a disposición para recibir solicitudes de conexión entrantes. Otro dispositivo encuentra el dispositivo detectable con un proceso de descubrimiento de servicios. Después de que el dispositivo detectable acepta la solicitud de vinculación, los dos dispositivos completan un proceso de vinculación en el que intercambian claves de seguridad. Los dispositivos almacenan en caché estas claves para usarlas más adelante.
Una vez que se completan los procesos de vinculación y vinculación, los dos dispositivos intercambian información. Cuando se completa la sesión, el dispositivo que inició la solicitud de vinculación libera el canal que lo había vinculado al dispositivo detectable. Sin embargo, los dos dispositivos permanecen vinculados, por lo que pueden volver a conectarse automáticamente durante una sesión futura, siempre que estén dentro del alcance del otro y ninguno de los dispositivos haya quitado la vinculación.
Para usar las APIs de Bluetooth, se deben declarar varios permisos en el archivo de manifiesto. Luego, accede a BluetoothAdapter y determina si Bluetooth está disponible en el dispositivo. Si el Bluetooth está disponible, sigue estos tres pasos:
- Buscar dispositivos Bluetooth cercanos, ya sean dispositivos que ya están vinculados o nuevos
- Cómo conectarte a un dispositivo Bluetooth
- Transfiere datos con el dispositivo conectado.
Algunos dispositivos usan un perfil de Bluetooth específico que declara los datos que proporciona.
Clases e interfaces clave
Todas las APIs de Bluetooth están disponibles en el paquete android.bluetooth.
A continuación, se indican las clases y las interfaces que necesitas para crear conexiones Bluetooth:
BluetoothAdapter- Representa el adaptador de Bluetooth local (radio Bluetooth).
BluetoothAdapteres el punto de entrada para toda interacción de Bluetooth. Con esta clase, puedes descubrir otros dispositivos Bluetooth, consultar una lista de dispositivos vinculados, crear una instancia deBluetoothDevicecon una dirección MAC conocida y crear unBluetoothServerSocketpara escuchar las comunicaciones de otros dispositivos. BluetoothDevice- Representa un dispositivo Bluetooth remoto. Usa esta clase para solicitar una conexión con un dispositivo remoto a través de un
BluetoothSocketo consultar información sobre el dispositivo, como su nombre, dirección, clase y estado de vinculación. BluetoothSocket- Representa la interfaz de un socket de Bluetooth (similar a un
Socketde TCP). Este es el punto de conexión que permite que una app intercambie datos con otro dispositivo Bluetooth medianteInputStreamyOutputStream. BluetoothServerSocket- Representa un socket de servidor abierto que escucha las solicitudes entrantes (similar a un
ServerSocketde TCP). Para conectar dos dispositivos, uno de ellos debe abrir un socket de servidor con esta clase. Cuando un dispositivo Bluetooth remoto realiza una solicitud de conexión a este dispositivo, este acepta la conexión y, luego, devuelve unBluetoothSocketconectado. BluetoothClass- Describe las características y capacidades generales de un dispositivo Bluetooth. Este es un conjunto de propiedades de solo lectura que define las clases y los servicios del dispositivo. Si bien esta información proporciona una sugerencia útil sobre el tipo de dispositivo, los atributos de esta clase no necesariamente describen todos los perfiles y servicios de Bluetooth que admite el dispositivo.
BluetoothProfile- Es una interfaz que representa un perfil de Bluetooth. Un perfil de Bluetooth es una especificación de interfaz inalámbrica para la comunicación basada en Bluetooth entre dispositivos. Un ejemplo es el perfil de manos libres. Para obtener más información sobre los perfiles, consulta Perfiles de Bluetooth.
BluetoothHeadset- Proporciona compatibilidad para que los auriculares Bluetooth se usen con teléfonos celulares. Esto incluye el perfil de auriculares Bluetooth y el perfil de manos libres (v1.5).
BluetoothA2dp- Define cómo se puede transmitir audio de alta calidad de un dispositivo a otro a través de una conexión Bluetooth con el perfil de distribución de audio avanzado (A2DP).
BluetoothHealth- Representa un proxy de perfil de dispositivo de salud que controla el servicio de Bluetooth.
BluetoothHealthCallback- Es una clase abstracta que usas para implementar devoluciones de llamada de
BluetoothHealth. Debes extender esta clase y, luego, implementar los métodos de devolución de llamada para recibir actualizaciones sobre los cambios en el estado de registro de la app y el estado del canal de Bluetooth. BluetoothHealthAppConfiguration- Representa una configuración de la app que registra la app de terceros de Bluetooth Health para comunicarse con un dispositivo de salud Bluetooth remoto.
BluetoothProfile.ServiceListener- Es una interfaz que notifica a los clientes de comunicación entre procesos (IPC) de
BluetoothProfilecuando se conectaron o desconectaron del servicio interno que ejecuta un perfil en particular.