Antes de que tu app pueda comunicarse a través de Bluetooth o Bluetooth de bajo consumo, debes verificar que Bluetooth sea compatible con el dispositivo y, de ser así, asegurarte de que esté habilitado. Ten en cuenta que esta verificación solo es necesaria si el atributo android:required
en la entrada del archivo de manifiesto <uses-feature.../>
se establece en false
.
Si Bluetooth no es compatible, debes inhabilitar correctamente cualquier función de Bluetooth. Si Bluetooth es compatible, pero está inhabilitado, puedes solicitar que el usuario lo habilite sin salir de tu app.
El primer paso es agregar los permisos de Bluetooth a tu archivo de manifiesto para usar las siguientes APIs.
Una vez implementados los permisos, la configuración del Bluetooth se realiza en dos pasos mediante el BluetoothAdapter
:
Obtén el
BluetoothAdapter
.Se requiere el
BluetoothAdapter
para toda la actividad de Bluetooth. ElBluetoothAdapter
representa el propio adaptador de Bluetooth del dispositivo (la radio Bluetooth). Para obtener unBluetoothAdapter
, primero debes tener unContext
. Usa este contexto para obtener una instancia del servicio del sistemaBluetoothManager
. Si llamas aBluetoothManager#getAdapter
, obtendrás un objetoBluetoothAdapter
. SigetAdapter()
muestra un valor nulo, significa que el dispositivo no es compatible con Bluetooth.Por ejemplo:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Habilita Bluetooth.
A continuación, debes asegurarte de que Bluetooth esté habilitado. Llama a
isEnabled()
para comprobar si Bluetooth está habilitado actualmente. Si este método muestra el valor "false", Bluetooth está inhabilitado. Para solicitar que se habilite Bluetooth, llama astartActivityForResult()
y pasa una acción de intentACTION_REQUEST_ENABLE
. Esta llamada emite una solicitud para habilitar Bluetooth a través de la configuración del sistema (sin detener tu app).Por ejemplo:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Aparecerá un cuadro de diálogo en el que se le solicitará permiso al usuario para habilitar Bluetooth, como se muestra en la Figura 1. Si el usuario otorga el permiso, el sistema comienza a habilitar Bluetooth y el foco vuelve a tu app cuando se completa (o falla) el proceso.
Figura 1: Diálogo de habilitación de Bluetooth
La constante REQUEST_ENABLE_BT
que se pasa a startActivityForResult()
es un número entero definido localmente que debe ser mayor o igual que 0. El sistema te devuelve esta constante en la implementación de onActivityResult()
como el parámetro requestCode
.
Si la habilitación de Bluetooth se realiza correctamente, tu actividad recibe el código de resultado RESULT_OK
en la devolución de llamada onActivityResult()
. Si Bluetooth no se habilitó debido a un error (o a que el usuario respondió "Rechazar"), el código de resultado será RESULT_CANCELED
.
De manera opcional, tu app también puede escuchar el intent de transmisión ACTION_STATE_CHANGED
, que el sistema emite cada vez que cambia el estado de Bluetooth. Esta transmisión contiene los campos adicionales EXTRA_STATE
y EXTRA_PREVIOUS_STATE
, que incluyen los estados de Bluetooth nuevo y antiguo, respectivamente. Los valores posibles para estos campos adicionales son STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
y STATE_OFF
.
La escucha de esta transmisión puede ser útil si tu app necesita detectar cambios en el tiempo de ejecución realizados en el estado de Bluetooth.
Una vez que se habilite Bluetooth en el dispositivo, puedes usar Bluetooth clásico y Bluetooth de bajo consumo.
Para la versión clásica de Bluetooth, puedes encontrar dispositivos Bluetooth y conectarte a dispositivos Bluetooth.
Para Bluetooth de bajo consumo, puedes encontrar dispositivos BLE, conectarte a un servidor GATT y transferir datos BLE.