Exploración de BLE Beacon de Android
Bluetooth LE se agregó en Android 4.3, pero parece que no hay modo de escaneo de fondo que despertaría una aplicación una vez que se ha registrado para ser notificado a través de un BLE UUID disponible en la proximidad.
Esto exactamente parece ser posible a través de iOS7 y iBeacons API. ¿Alguien sabe si existe tal característica en Android 4.3 o si hay una buena solución para la exploración periiodically el entorno BLE para dispositivos BLE?
- Cómo identificar Eddystone URL y uid?
- ¿Cómo detectar múltiples balizas usando la biblioteca de Altbeacon android?
- Exploración de fondo de iBeacon
- IBeaconGap Cordova Plugin basado en RadiusNetwork Android Library
- Android Bluetooth baja energía - iBeacon
Http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
Estimote Details iOS 7 iBeacon Support For Its Contextual Proximity Shopping Devices
- Android Studio - Estimate SDK - No se pudo encontrar la clase
- Servicio de detector de balizas de estimación en segundo plano
- Problemas con el ejemplo de Kontakt.io Beacon
- Android Beacon Library funciona bien en un dispositivo Android 4.4, pero no en otro
- Estimar la detección de regiones de beacons de un servicio en segundo plano
- Cómo obtener el Id único de un Beacon usando Estimate SDK en Android
- ¿Funciona BluetoothLeAdvertiser en un Nexus 5 con Android 5.0?
- ¿Qué es exactamente txPower para Bluetooth LE y cómo se utiliza?
Creo que hay una solución como a continuación: Necesita implementar un servicio y crear un subproceso a while loop para llamar a mBluetoothAdapter.startLeScan (mLeScanCallback), a continuación, puede comprobar si se trigeed por dispositivo específico y más para buscar UUID específico.
Directamente desde el ejemplo de Android, puede utilizar un controlador:
private void scanLeDevice(final boolean enable) { if (enable) { // Stops scanning after a pre-defined scan period. mHandler.postDelayed(new Runnable() { @Override public void run() { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); invalidateOptionsMenu(); } }, SCAN_PERIOD); mScanning = true; mBluetoothAdapter.startLeScan(mLeScanCallback); } else { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); } invalidateOptionsMenu(); }
En mi experiencia es mejor crear un servicio que permanezca en funcionamiento. Importante es sólo escanear las balizas que le interesan, de lo contrario perderá una gran cantidad de mensajes de bucle de análisis de potencia de CPU.
Esta biblioteca puede ayudarte a escanear los iBeacons que te interesan: https://github.com/inthepocket/ibeacon-scanner-android
Además, cuando el escaneo no es posible (debido a Bluetooth desactivado, la ubicación desactivada, el permiso revocado), tiene que reiniciar el escaneo cada vez que se reúnen todas las condiciones necesarias, aquí necesitará oyentes de difusión.
Condiciones para poder escanear:
-
Tener un chip LE Bluetooth: cualquiera.
-
Tiene Bluetooth activado: cualquier.
-
Tenga la ubicación en: Android 6+.
-
Tener permiso de tiempo de ejecución de la ubicación: Android 6+.
-
Máximo inicio 5 escaneos en 30 segundos: Android 7+.
- Cómo configurar el icono de Disposición de cajones en el lado derecho de la pantalla del dispositivo?
- Cómo hacer que Google Voice se ejecute continuamente en segundo plano en Android