Bluetooth de baja energía

Bluetooth Low Energy (BLE), disponible en Android 4.3 y posteriores, crea conexiones cortas entre dispositivos para transferir ráfagas de datos. BLE permanece en modo de suspensión cuando no está conectado. Esto permite que BLE proporcione un menor ancho de banda y un menor consumo de energía en comparación con el Bluetooth clásico. Es ideal para aplicaciones como un monitor de frecuencia cardíaca o un teclado inalámbrico. Para utilizar BLE, los dispositivos deben tener un chipset que admita BLE.

Implementación

Todos los perfiles de aplicaciones BLE actuales se basan en el perfil de atributos genéricos (GATT). Cuando un dispositivo Android interactúa con un dispositivo BLE, el dispositivo que envía información es el servidor y el dispositivo que recibe información es el cliente. Android incluye API de desarrollador para BLE , incluidas API para interacciones entre servidores GATT y clientes GATT. Para aprovechar al máximo las API de BLE, implemente los requisitos de HCI de Bluetooth de Android .

Modos de dispositivo

Cuando se utiliza BLE, un dispositivo Android puede actuar como dispositivo periférico, dispositivo central o ambos. El modo periférico permite que los dispositivos envíen paquetes publicitarios. El modo central permite que los dispositivos busquen anuncios. Un dispositivo Android que actúa como dispositivo periférico y central puede comunicarse con otros dispositivos periféricos BLE mientras envía anuncios en modo periférico. Los dispositivos compatibles con Bluetooth 4.1 y versiones anteriores solo pueden usar BLE en modo central. Es posible que los conjuntos de chips de dispositivos más antiguos no admitan el modo periférico BLE.

escaneo BLE

Un dispositivo Android puede apuntar y buscar dispositivos Bluetooth específicos de manera más eficiente cuando usa BLE. Las API BLE permiten a los desarrolladores de aplicaciones crear filtros para encontrar dispositivos con menos participación del controlador host.

Escaneo de ubicación

Los servicios de ubicación de un dispositivo pueden usar Bluetooth para detectar balizas Bluetooth y proporcionar una ubicación más precisa. Así es como los usuarios habilitan la función:

  1. Vaya a Configuración > Seguridad y ubicación > Ubicación .
  2. Verifique que el botón Ubicación activado / desactivado esté en la posición Activado .
  3. Vaya a Modo .
  4. Seleccione el modo Alta precisión o Ahorro de batería .

En Android 11 o versiones anteriores, las aplicaciones individuales requieren permisos de ubicación para usar el escaneo BLE, incluso si escanean solo para encontrar dispositivos a los que conectarse. Si el usuario desactiva el escaneo de ubicación o no otorga permisos de ubicación a una aplicación, la aplicación no recibirá ningún resultado del escaneo BLE.

Desde Android 12, los permisos BLUETOOTH_SCAN , BLUETOOTH_ADVERTISE y BLUETOOTH_CONNECT pueden permitir que las aplicaciones busquen dispositivos cercanos sin necesidad de solicitar el permiso de ubicación. Para obtener más información, consulte Nuevos permisos de Bluetooth en Android 12 .

Los usuarios pueden desactivar el escaneo en segundo plano de Bluetooth a nivel del sistema yendo a Configuración > Seguridad y ubicación > Ubicación > Escaneo y desactivando la opción de escaneo de Bluetooth . Esto no afecta el escaneo BLE en busca de ubicación o dispositivos locales.

Filtrar resultados de análisis

Android 6.0 y posteriores incluyen escaneo BLE y coincidencia de filtros en el controlador Bluetooth. Un dispositivo puede filtrar los resultados del escaneo e informar eventos encontrados y perdidos relacionados con dispositivos BLE al procesador de aplicaciones (AP). El filtrado también funciona para escaneos por lotes, lo que ayuda a ahorrar energía a medida que el escaneo BLE se descarga en el firmware. Los escaneos por lotes reducen la frecuencia con la que el AP se activa debido al escaneo BLE en busca de dispositivos o balizas.

La función OnFound / OnLost se implementa en el controlador Bluetooth y luego se prueba para confirmar que los dispositivos BLE no se pierdan en los escaneos. Esto proporciona ahorro de energía y también puede proporcionar los siguientes beneficios:

  • Para un evento OnFound , el AP principal se activa al descubrir un dispositivo específico.
  • Para un evento OnLost , el AP se activa cuando no se puede encontrar un dispositivo específico.
  • Las aplicaciones de Framework reciben menos notificaciones no deseadas cuando un dispositivo cercano está dentro del alcance.
  • Los escaneos continuos permiten que las aplicaciones del marco reciban notificaciones cuando un dispositivo está fuera del alcance.

Un filtro de escaneo puede basarse en el descubrimiento de los anuncios de un dispositivo (el evento OnFound ). La capa Java puede especificar parámetros como el primer descubrimiento (o un número específico de anuncios desde el primer descubrimiento). Implemente el filtrado BLE mediante el comando HCI de filtro de contenido de paquetes publicitarios .