Combina iBeacon bluetooth de baja energía con Android 4.3


Estoy buscando una manera de detectar iBeacon (iOS 7.0 característica) desde un dispositivo Android. Leí la documentación de Android, donde parece que el iBeacon es una especie de servidor GATT que envía su posición. Mientras que la documentación de Android dice que no debería sondear esos datos, pero para la detección esto sería nessesary.

Googleo mucho, pero este tema es bastante nuevo (incluso creé una nueva etiqueta ibeacon ), así que estaría feliz si obtengo algunos enlaces a recursos de iOS mundo que describe la implementación. También si hay algunas libs Android que no he encontrado todavía sería bueno.

Author: indivisible, 2013-07-26

3 answers

EDITAR: La biblioteca de abajo ha sido eliminada, pero una biblioteca de reemplazo ahora está disponible aquí:

Https://github.com/AltBeacon/android-beacon-library


He portado los SDK iBeacon iOS7 a Android, y pude ver iBeacons estándar y estimar su rango. El código está disponible aquí:

Https://github.com/RadiusNetworks/android-ibeacon-service

Para que esto funcione, necesita Android 4.3 que introdujo el APIs Bluetooth de baja Energía. También necesita un dispositivo con un chipset bluetooth de baja energía.

Si no desea utilizar la biblioteca completa de arriba, puede rodar la suya propia. Los iBeacons simplemente transmiten un anuncio BLE una vez por segundo que comienza con una secuencia conocida de bytes. Simplemente tienes que decirle a Android que haga un escaneo BLE, obtenga cada anuncio y busque uno que comience con la secuencia de bytes iBeacon conocida. A continuación, puede analizar los campos iBeacon. Aquí está el código que muestra cómo esto se hace:

Https://github.com/RadiusNetworks/android-ibeacon-service/blob/master/src/com/radiusnetworks/ibeacon/IBeacon.java#L177-L231

 67
Author: davidgyoung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-07 23:47:23

El único problema aquí es detectar beacon incluso la aplicación no se está ejecutando. A diferencia de iOS7, no es compatible de forma nativa. En iOS7, cuando esté en su BT, le notificará automáticamente cuando ingrese a la región de iBeacon registrada.

Había implementado iBeacon en Android 4.3 API usando IntentService plus AlarmManager. Para hacer un escaneo cada 30 segundos (para ahorrar energía de la batería, será más largo). Funciona bien para el usuario. Solo cuando se encuentra el uuid/mayor/menor coincidente, se activará notificación. De lo contrario, dormirá y se despertará para escanear nuevamente.

Creo que esta es la solución para su pregunta.

 2
Author: Alfred Loh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-17 02:56:46

No entendí lo que quiere decir, ¿podría proporcionar enlaces a la documentación que dice que no debe sondear los datos?

Pero me parece que el iBeacon está funcionando como un servidor, lo cual me resulta un poco gracioso. ¿No está destinado a encontrar otros dispositivos, no el teléfono en sí?

Https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.position_quality.xml

Estas son las características que utiliza aunque. A mí me parece que los dispositivos que estás buscando son las "balizas" y el teléfono en sí es solo un oyente. Por lo tanto, no encuestaría los datos de EHPE y EVPE, pero en realidad debería escuchar sus cambios o "transmisiones".

Yo también soy un poco nuevo en esto y no pude encontrar ninguna documentación realmente específica.

Sin embargo, tenga en cuenta que en el enlace que proporcioné hay un enlace de descarga en la esquina superior que le proporcionará la documentación completa en formato PDF. Alli probablemente encontrará más respuestas.

 0
Author: user2637046,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-31 11:35:56