Bluetooth A2DP(Advanced Audio Distribution Profile
) es el perfil Bluetooth Estéreo que define cómo se puede transmitir audio estéreo de alta calidad de un dispositivo a otro a través de una conexión Bluetooth – por ejemplo, música transmitida desde un teléfono móvil a unos auriculares inalámbricos.
En versiones anteriores de Android las clases que se requieren para conectarse a un dispositivo Bluetooth A2DP estaban ocultas en el nivel de la API y en las versiones posteriores a partir de Android 4.0, se hace visible parcialmente.
Pero hay una solución que funcionará en todas las versiones de Android, se puede interactuar fácilmente con cualquier dispositivo A2DP simplemente haciendo algunas llamadas IPC (Inter Process Communication).
Básicamente, esto se consigue mediante el uso de AIDL (Android Interface Definition Language) que básicamente permite definir la interfaz de programación que tanto el cliente como el servicio acuerdan para comunicarse entre sí utilizando IPC.
¿Cómo conectar un dispositivo Bluetooth a cualquier dispositivo Android?
Para habilitar la conexión a un dispositivo Bluetooth a cualquier dispositivo android de forma programada, sólo hay que seguir estos sencillos pasos.
Paso 1: Crear archivos AIDL
Nuestro primer paso es hacernos con la instancia de la clase Bluetooth A2DP. Para ello, lo que tienes que hacer es crear 2 archivos AIDL primero en tu carpeta «src» del Proyecto Android bajo el paquete android.bluetooth
de la siguiente manera :
Paso 2: Añadir permisos
Después, en el Manifiesto de Android, añada permisos para el uso de Bluetooth y los siguientes servicios :
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.BIND_ACCESSIBILITY_SERVICE
Paso 3: Habilitar Bluetooth y obtener dispositivos emparejados
En primer lugar, debe asegurarse de que Bluetooth está habilitado. Para solicitar que se habilite el Bluetooth, llame a startActivityForResult()
con la acción ACTION_REQUEST_ENABLE
Intento. Esto emitirá una solicitud para habilitar el Bluetooth a través de la configuración del sistema.
val enableBtIntent = Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
Puede obtener los dispositivos ya emparejados de la clase BluetoothAdapter de la siguiente manera:
devices = BluetoothAdapter.getDefaultAdapter().bondedDevices
De los dispositivos puede obtener el dispositivo de auriculares que desea emparejar
Paso 4: Establecer la conexión Bluetooth
Utilice getProfileProxy()
para establecer una conexión con el objeto proxy de perfil asociado al perfil. Configurar un BluetoothProfile.ServiceListener(),
Este listener notifica a los clientes BluetoothProfile
IPC cuando se han conectado o desconectado del servicio.
Paso 5: Transmitir URL de audio
El siguiente paso es transmitir el audio que se quiere reproducir en los auriculares Bluetooth conectados. Inicialice MediaPlayer y reproduzca la url de streaming como se indica a continuación:
Paso 6: Desconectar el dispositivo
Cuando haya terminado de reproducir el audio y quiera desconectar el dispositivo cierre la conexión proxy, utilice el siguiente método para desconectar y liberar el MediaPlayer: