Android Bluetooth de bajo consumo | Creación de una aplicación de chat con BLE y Jetpack Compose | de Shaik Ahron | octubre 2022
Contenidos
Caducidad del artículo:
- ¿Qué es BLE?
- Conceptos básicos de BLE.
- Creación de una aplicación de chat con BLE.
BLE significa Bluetooth de baja energía. Bluetooth puede manejar una gran cantidad de datos, pero consume rápidamente la vida útil de la batería. Bluetooth Low Energy se utiliza para aplicaciones que no necesitan intercambiar grandes cantidades de datos y pueden funcionar de manera más rentable con la energía de la batería durante años. Androide proporciona soporte de plataforma integrado para Bluetooth Low Energy (BLE) en el núcleo, proporcionando API que las aplicaciones pueden usar para descubrir dispositivos, consultar servicios y transferir información. Las API de BLE lo ayudan a comunicarse sin problemas con dispositivos BLE con menos consumo de batería. Para transferir datos entre dispositivos habilitados para BLE, debe seguir los pasos a continuación:
- Mencione los permisos requeridos en Manifest.xml.
- primero deben formar un canal de comunicación.
- Luego acceda a BluetoothAdapter y busque dispositivos BLE disponibles cerca.
- Una vez que se encuentra un dispositivo, las capacidades del dispositivo BLE se descubren conectándose al servidor GATT en el dispositivo BLE.
- Una vez conectado, transferir datos.
Necesita saber algunos términos antes de continuar
Perfiles:
Un perfil es una especificación de cómo funciona un dispositivo en una aplicación específica. Un dispositivo puede implementar más de un perfil. Lista algunos perfiles:
- Perfil de distribución de audio avanzado (A2DP)
2. Perfil de atributo genérico (GATT)3. Perfil de dispositivo de salud (HDP)
Perfil de atributos genéricos (GATT):
El perfil GATT es una especificación general para enviar y recibir datos cortos conocidos como «atributos» a través de una conexión BLE. Con este perfil podemos transferir datos entre dispositivos BLE.
Característica:
Una propiedad contiene un valor único y descriptores opcionales que describen el valor de la propiedad.
Descripción:
Los descriptores son atributos definidos que describen un valor de propiedad. Se pueden usar para describir las características del rasgo o para controlar ciertos comportamientos del rasgo.
Servicio:
El servicio contiene una colección de características.
Anuncio publicitario:
Anuncio significa cuando un periférico BLE envía paquetes a todos los dispositivos cercanos. El dispositivo receptor puede entonces actuar sobre esa información o conectarse para obtener más información.
Nota: Cuando un usuario empareja su dispositivo con otro dispositivo a través de BLE, se puede acceder a los datos comunicados entre los dos dispositivos Todo el mundo Aplicaciones en el dispositivo del usuario.
Aquí está el enlace de GitHubConstruyamos una aplicación de chat con BLE Apis
Condición previa: Necesita dos dispositivos Android con soporte BLE.
Paso 1. Crea un proyecto de Android al que le puedas dar cualquier nombrePaso 2. Primero necesitamos agregar permisos y necesitamos agregar una función ble que será requerida.Paso 3. Ahora necesitamos pedir permiso de ubicación.Para el manejo de permisos utilizo una biblioteca. Use esta biblioteca incluyéndola en el archivo gradle de la aplicación. Ahora usa esto para pedir permiso. En resumen()paso 4 Bueno, como puedes ver en línea 16 empezamos el servidor del GATT a la que se envían los datos el cliente del GATT.aquí iniciarServidor() método obtenemos BluetoothAdapter de Administrador de Bluetooth y primero comprobamos si bluetooth es habilitado o deshabilitado. Si está deshabilitado, llamamos a Bluetooth para activar el diálogo. Si el usuario lo activa, empezamos que servidor del GATT y entonces empezar a hacer publicidad.Mostraré los métodos ahora. Así que ahora en este método primero necesito una devolución de llamada del servidor GATT porque todo este proceso es asíncrono. Se implementan dos métodos en esta devolución de llamadaonConnectionStateChange: Esto se llama cuando un dispositivo remoto está conectadoonCharacteristicWriteRequest: Esto significa que un cliente remoto ha solicitado escribir en una propiedad local.ahora configurarGattServe() método creamos un servicio local y agregamos dos propiedades noticias debe tener una identificación única. Ahora hablemos iniciarpublicidad() método En este método también, tenemos una devolución de llamada de anuncio que nos dice si el anuncio falló o tuvo éxito. Tenemos que mencionar dos cosas más al lanzar la promoción de este dispositivo. preferencias publicitarias, cómo se entregan esos anuncios a otros dispositivos cercanos y luego datos para incluir cuando se anuncian en ese dispositivo. aquí anunciamos SERVICE_UUID y los datos del nombre del dispositivo contenido.paso 5 Ahora necesitamos escanear dispositivos cercanos, para esto necesitamos un Escáner bluetoothTambién es similar a nuestra publicidad. Aquí, en esta devolución de llamada de escaneo, necesitamos implementar tres métodosonScanResult: Esto se llama cuando se encuentra un anuncio.onBatchScanResults: Esta es solo una lista de retorno de dispositivos escaneados previamente. onScanFailed: Como habrás adivinado, aquí devuelve el código de error EscanearFiltro los estamos buscando específicamente SERVICIO_UUID lo que mencionamos cuando anunciamos en el servidor GATT, nada más. En configuración de escaneo Defina cómo se debe realizar el escaneo. Y cuando obtenga un dispositivo, elija un dispositivo con el que comunicarse. Puedes chatear con conectar al dispositivo de chat () método pasando esta instancia de dispositivo para conectarse a un dispositivo al que necesita llamar conectagatt() y pase la devolución de llamada GattClient.onConnectionStateChange(): Esto le permite determinar si el cliente Gatt está conectado/desconectado a un servidor Gatt remoto. Una vez conectado a un servidor Gatt, descubriremos los servicios proporcionados por el servidor.onServiceDiscovered(): Con este método, puede encontrar los servicios que proporciona el servidor Gatt. aquí estamos interesados en un servicio con UUID= SERVICIO_UUID.No ha terminado con la creación de escaneo y publicidad de Bluetooth. Solo llama detenerServidor() De lo contrario, la aplicación agotará la batería.Ahora concentrémonos en crear la interfaz de usuario con Jetpack Composever primero Datos en vivo como estado Debe agregar esta dependencia para hacer coincidir la versión con su versión de redacción. Ahora en MainActivit.kt. Tenemos 3 estados.
- Estado de escaneo de Bluetooth
- Estado de ConnectedDeviceConnection.
- isChatUI abierto.
Con esto mostramos un escanear pantalla y una vez seleccionado un dispositivo, mostrar el pantalla de chatEsta es la creación de chat. Simplemente LazyColumn se usa para mostrar chats. Esta es la creación de DeviceScan. Aquí, dependiendo de los estados de escaneo, mostramos la interfaz de usuario, eso es todo.Aquí está la interfaz de usuario de salida.Primero se le pedirá que active BluetoothLuego obtendrá una lista de dispositivos BLE con servicio coincidente SERVICIO_UUID.Esta es la pantalla de DeviceScan.Ahora al hacer clic en cualquier dispositivo. Se abrirá la pantalla de chat. También debe instalar esta aplicación en otro dispositivo Android y seleccionar este dispositivo para chatear. Eso es todo. Puede encontrar más información sobre BLE aquíGracias por leer