Comment détecter Région d'Entrée/Sortie pour plusieurs balises à l'aide de AltBeacon android-phare-de la bibliothèque?
Je suis en train de travailler avec les iBeacons et à l'aide de la AltBeacon bibliothèque.
beaconManager.getBeaconParsers()
.add(new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
Je voudrais que mon application Android pour détecter et générer un événement lorsque les phares entrée et de sortie de la visibilité.
Ceci fonctionne parfaitement bien avec une seule balise à l'aide de la bibliothèque à l'aide de méthodes.
public void **didEnterRegion**(Region region)
et
public void **didExitRegion**(Region region)
Mon problème est que lorsque plusieurs balises sont visibles en même temps.
Je suis d'essayer de maintenir un tableau avec toutes les balises visibles.
Je veux générer un événement à chaque fois qu'une balise entre et sort.
L'événement doit identifier la balise qui a généré l'événement par son Identifiant unique.
Mes balises sont uniquement identifiable à l'aide de la beacon.getIdentifiers()
ou (UUID, Majeurs et Mineurs)
Le problème est que le didExitRegion
méthode ne soit pas exécutée jusqu'à ce que toutes les balises de quitter la région.
Peut-on penser d'une façon simple pour moi de réaliser mes objectifs à l'aide d'AltBeacon bibliothèque?
Toutes les suggestions sont grandement appréciés.
didExitRegion
méthode a été exécuté? MerciOriginalL'auteur user993543 | 2014-08-09
Vous devez vous connecter pour publier un commentaire.
Deux options:
Définir une région différente pour correspondre qu'à chaque balise, en précisant toutes leurs identifiants, et un moniteur pour chaque. Vous allez obtenir une autre entrée et de sortie de rappel pour chaque région.
Permettre allant, et de mettre le code dans le
didRangeBeaconsInRegion
rappel de suivre les balises. Vous pouvez utiliser unjava.util.HashMap
de garder une trace de toutes les balises qui sont visibles (avec un horodatage de la dernière fois que chacun a été vu), et puis si vous n'avez pas vu un phare dans, disons, cinq secondes, vous pouvez supprimer le phare de laHashMap
et d'exécuter votre sortie logique de cette balise.L'Option 1 est idéal pour un petit nombre de balises que vous connaissez leurs identifiants à l'avant. L'Option 2 est plus complexe, mais pour un grand nombre de balises ou si vous ne connaissez pas leurs identifiants à l'avance.
excuse mon ignorance, mais qu'est-ce que myIdentifier1 et que devrait-il être défini?
C'est juste une chaîne unique pour identifier la région. Vous pouvez utiliser la même chaîne pour arrêter la surveillance. La chaîne peut être n'importe quelle valeur que vous voulez tant que c'est différent de toute autre région que vous avez construit.
J'ai mal compris l'API, les identifiants (id1, id2 et id3) sont en fait des uuid, majeures et mineures, si je passe la valeur null, il leur permettre d'être quoi que ce soit. Mais l'ordre des questions... pourquoi ne pas appeler l'uuid de la, majeures et mineures? majeur et mineur, sont des entiers uuid est une chaîne uuid. Pourquoi les enveloppant dans une classe Integer?
Désolé, je comprends que les noms sont un peu vagues. Deux raisons à cela: (1) la bibliothèque est utilisée pour plusieurs type de balise et pas seulement les iBeacons. Les termes de l'uuid, majeur et mineur, sont iBeacon. (2) La bibliothèque est ouverte à la source afin de nous éviter l'usage de termes spécifiques à une technologie propriétaire comme iBeacon. Ils sont emballés dans un Identificateur de classe de masquer la complexité inhérents à traiter avec multi-octets identificateurs qui varient en longueur (avec iBeacon un UUID est de 16 octets, et la majeure et la mineure sont deux octets). Habituellement, vous n'avez pas besoin de penser à ce sujet.
OriginalL'auteur davidgyoung
/***************Ce Code d'estimote Balises *****************/
OriginalL'auteur