Exploración de fondo de iBeacon
He escrito mi propio servicio de escaneo BLE pequeño que se activa a través de una alarma cada 3-5 segundos. Se analiza durante 1,1 segundos para obtener los faros a su alrededor y luego transforma la señal RSSI en una proximidad aproximada.
Ahora estoy considerando el servicio iBeacon de Android de las redes de radio, pero me estoy preguntando cómo podría realizar la misma exploración de fondo.
- IBeaconGap Cordova Plugin basado en RadiusNetwork Android Library
- Variaciones de rango de ibeacon de Radius Networks
- ¿Por qué isMultipleAdvertisementSupported () devuelve false, cuando getBluetoothLeAdvertiser devuelve un objeto?
- Android Bluetooth baja energía - iBeacon
- ¿Podemos convertir nuestro dispositivo Android en un faro?
Por ejemplo: Quiero que las balizas scannign para iniciar annd ejecutar en el fondo y recibir Intents en un receptor de difusión para decidir lo que hago con los beacons escaneados.
¿Hay soem ejemplos y hay una estimación de la cantidad de batería que consume?
- Android Studio - Estimate SDK - No se pudo encontrar la clase
- Exploración de BLE Beacon de Android
- ¿Qué es exactamente txPower para Bluetooth LE y cómo se utiliza?
- ¿Cómo detectar múltiples balizas usando la biblioteca de Altbeacon android?
- Problemas con el ejemplo de Kontakt.io Beacon
- ¿Cómo obtener respuestas más rápidas con AltBeacon?
- ¿Funciona BluetoothLeAdvertiser en un Nexus 5 con Android 5.0?
- Cómo obtener el Id único de un Beacon usando Estimate SDK en Android
La iBeacon Library de Radius Networks hace exactamente eso. Todo lo que tienes que hacer para ejecutarlo en segundo plano es vincular el IBeaconManager
a algo con un ciclo de vida largo. Esto puede ser un objeto personalizado android.app.Application
, o un servicio propio. Dado que ya ha escrito su propio servicio para su aplicación, podría enlazar fácilmente el IBeaconManager
con ese servicio y permanecería activo en segundo plano mientras el servicio se ejecute. También puede utilizar su servicio para enviar intenciones de difusión si lo desea, pero para la mayoría de los casos de uso esto probablemente no sea necesario.
En cuanto al uso de la batería, la aplicación de referencia de la biblioteca tiene un ejemplo de cómo configurar el modo de fondo en la biblioteca para que las exploraciones ocurran con menos frecuencia, lo que ahorra batería. El código pertinente en esa aplicación de referencia está aquí:
@Override protected void onPause() { super.onPause(); if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, true); } @Override protected void onResume() { super.onResume(); if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, false); }
Configurar el modo de fondo a verdadero reduce las exploraciones de Bluetooth a suceder sólo una vez muy 5 minutos – algo similar a lo que hace iOS. Basado en pruebas en un Nexus 4, esto reduce el consumo total de la batería del teléfono de 95mA a 55mA (ambos de los cuales incluyen el drenaje general del sistema operativo).
Divulgación completa: Trabajo para Radius Networks y soy el autor principal de la iBeaconLibrary de Android.
- Aplicación con 2 actividades de lanzamiento
- Buen diseño: hilos de trabajo y restablecimientos de actividad