Bluetooth de baja energía

Bluetooth Low Energy (BLE), disponible en Android 4.3 y versiones 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 ancho de banda más bajo y un consumo de energía reducido 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 usar BLE, los dispositivos deben tener un conjunto de chips compatible con BLE.

Implementación

Todos los perfiles de aplicación 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

Al usar BLE, un dispositivo Android puede actuar como un dispositivo periférico, un 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 de BLE permiten a los desarrolladores de aplicaciones crear filtros para encontrar dispositivos con menos participación del controlador del 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 Activar / Desactivar ubicación esté en la posición Activado .
  3. Ir 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 están escaneando solo para encontrar dispositivos a los que conectarse. Si el usuario deshabilita el escaneo de ubicación o no otorga permisos de ubicación a una aplicación, entonces la aplicación no recibirá ningún resultado de escaneo BLE.

A partir de 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 deshabilitar el escaneo en segundo plano de Bluetooth a nivel del sistema yendo a Configuración > Seguridad y ubicación > Ubicación > Escaneo y deshabilitando la alternancia para el escaneo de Bluetooth . Esto no afecta el escaneo BLE para ubicación o dispositivos locales.

Filtrado de resultados de escaneo

Android 6.0 y versiones 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 ya 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 OnFound / OnLost se implementa en el controlador de Bluetooth y luego se prueba para confirmar que los dispositivos BLE no se pierden en los escaneos. Esto proporciona ahorros 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 sean notificadas cuando un dispositivo está fuera de alcance.

Un filtro de exploración puede basarse en el descubrimiento de los anuncios de un dispositivo (el evento OnFound ). La capa de 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 del filtro de contenido de paquetes publicitarios .