39 votes

Combiner iBeacon bluetooth basse énergie avec Android 4,3

Je suis à la recherche d'un moyen de détecter iBeacon (iOS 7.0 fonctionnalité) à partir d'un appareil Android. J'ai lu le Android de documentation, où il semble que l'iBeacon est une sorte du GATT de serveur qui envoie sa position. Alors que l'Android documentation dit que je ne devrais pas le sondage les données, mais pour la détection ce serait nessesary.

Je google beaucoup mais ce sujet est tout à fait nouveau (j'ai même créé une nouvelle balise ) donc, je serais heureux si je reçois quelques liens vers des ressources du monde iOS qui descripes la mise en œuvre. Aussi, si il y a quelques Android libs que je n'ai pas trouver encore, ce serait bien.

67voto

davidgyoung Points 14271

EDIT: La bibliothèque ci-dessous a été pris vers le bas, mais une bibliothèque de remplacement est maintenant disponible ici:

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


J'ai porté la iOS7 iBeacon Sdk pour Android, et a été en mesure de voir la norme iBeacons et l'estimation de leur gamme. Le code est disponible ici:

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

Pour que cela fonctionne, vous avez besoin d'Android 4.3 qui a introduit la Basse Énergie de Bluetooth Api. Vous avez également besoin d'un appareil avec un peu d'énergie chipset bluetooth.

Si vous ne souhaitez pas utiliser la totalité de la bibliothèque ci-dessus, vous pouvez rouler votre propre. iBeacons simplement transmettre un BLE de la publicité une fois par seconde que de commencer avec une séquence d'octets. Vous avez simplement à dire Android pour faire un BLE d'analyse, chaque annonce, et en chercher un qui commence avec l'iBeacon séquence d'octets. Vous pouvez ensuite analyser la iBeacon champs. Voici le code de la montre comment c'est fait:

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

2voto

Alfred Loh Points 21

Le seul hic ici est de détecter la balise même l'application n'est pas en cours d'exécution. Contrairement à iOS7, il n'est pas nativement en charge. Dans iOS7, lorsque vous sur votre BT, il vous notifie automatiquement lorsque vous entrez dans la région enregistré iBeacon.

J'avais mis en œuvre iBeacon dans Android 4.3 API à l'aide de IntentService plus AlarmManager. Pour faire un scan toutes les 30 sec( pour économiser votre batterie, il sera plus long). Il fonctionne bien pour l'utilisateur. Seulement lorsque l'uuid correspondant/majeur/mineur est trouvé, il va déclencher des notifications. Sinon, il va dormir et se réveiller pour la numérisation de nouveau.

je pense que c'est la solution à votre question.

0voto

user2637046 Points 21

Je n'ai pas très bien ce que tu veux dire, pourriez-vous fournir des liens vers la documentation qui a dit que vous ne devriez pas interroger les données?

Mais il me semble que l'iBeacon est de travailler en tant que serveur, qui est une sorte de drôle pour moi. N'est-il pas censé trouver d'autres appareils, et pas le téléphone lui-même?

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

C'est avec les caractéristiques qu'il utilise bien. Pour moi, il ressemble que les périphériques que vous cherchez sont les "invisibles", et le téléphone lui-même est juste un écouteur. Donc, vous interroge pas le EHPE et EVPE de données, mais vous devriez écouter vraiment, c'est des modifications ou des "émissions".

Je suis un peu nouveau pour moi-même aussi et ne pouvais pas trouver toutes vraiment de la documentation spécifique.

Si, en être informé, dans le lien que j'ai fourni il y a lien de téléchargement dans le coin qui va vous fournir la documentation complète au format PDF. Là, vous trouverez probablement plus de réponses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X