|
|
|
|
|
- Présentation
- Principe
- Mise en place
- Version nécessaire
Détecter des balises Beacon
Un "beacon" est un petit boîtier capteur qui peut "dialoguer" sur un petit périmètre avec des smartphones ou tablettes par une connexion Bluetooth. La technologie utilisée est principalement celle du BTLE (Bluetooth Low Energie). Le Beacon peut par exemple indiquer la proximité d'une oeuvre d'art dans un musée; l'application pourra afficher le texte d'explication, ou lancer une vidéo ou un fichier audio sur le sujet. Côté commercial, un Beacon peut servir au déclenchement d'un message sur une promotion pour un produit à proximité. Un Beacon peut également servir à avertir l'usager qu'il passe à côté d'un magasin où se trouve un article qu'il cherche. Une application demande au téléphone de la prévenir quand un ou des Beacons se trouvent à proximité. Cette application peut être immédiatement refermée et ainsi ne pas consommer de batterie. Lorsque le téléphone détecte un Beacon, il relance l'application et transmet les informations du Beacon. De même, le téléphone prévient l'application lorsqu'il sort de la zone d'émission du Beacon. Le WLangage propose une famille de fonctions et 2 types spécifiques pour gérer les balises Beacon. Selon le mode d'utilisation de votre application, vous pouvez utiliser une des méthodes suivantes : - Méthode 1 : Détection automatique des balises Beacon
Cette méthode consiste à lancer une détection des groupes de balises Beacon en arrière-plan avec la fonction BeaconDétecteEnArrièrePlan. Lorsqu'un groupe de balises est détecté, une opération spécifique est effectuée. Exemple :
// Dans un musée, on souhaite déclencher la lecture (resp. l'arrêt) d'un audio-guide // lorsque le visiteur entre (resp. sort) d'une salle. // On associe à chaque balise Beacon le même UUID correspondant au musée et // un numéro Major correspondant à la salle dans laquelle la balise sera positionnée. // On dispose une balise Beacon à chaque entrée de chaque salle du musée. // L'application doit appeler la fonction BeaconDétecteEnArrièrePlan // avec un tableau de variables BeaconGroupe correspondant à chacune des salles du musée.  // La procédure callback passée en paramètre à la fonction sera appelée // à chaque entrée ou sortie d'une pièce et fournira les informations // du groupe de beacons détecté permettant ainsi // de piloter l'audio-guide pour lire la piste audio correspondante.  // UUID du musée sUUID est une chaîne = "f4231ab6-5ef2-6c99-4229-af6c72e0446e" // Création d'une variable beaconGroupe par salle groupeSalle1 est un beaconGroupe groupeSalle1.UUID = sUUID groupeSalle1.Major = 1 groupeSalle2 est un beaconGroupe groupeSalle2.UUID = sUUID groupeSalle2.Major = 2 groupeSalle3 est un beaconGroupe groupeSalle3.UUID = sUUID groupeSalle3.Major = 3 groupeSalle4 est un beaconGroupe groupeSalle4.UUID = sUUID groupeSalle4.Major = 4 // Lancement de la détection tabGroupeBeacon est un tableau de beaconGroupe = [groupeSalle1, ...   groupeSalle2, groupeSalle3, groupeSalle4] // La procédure ProcDétection sera exécuté chaque fois que le mobile entrera // ou sortira de la zone définie par chaque groupe de beacons. BeaconDétecteEnArrièrePlan(tabGroupeBeacon, ProcDétection) PROCÉDURE ProcDétection(Groupe est un beaconGroupe, nType est un entier)  SI nType = bdapSortie ALORS // Arrêt de la piste en cours RETOUR FIN  SI nType = bdapEntrée ALORS SELON Groupe.Major CAS 1 // Lecture de la piste de la salle 1 CAS 2 // Lecture de la piste de la salle 2 ... FIN FIN - Méthode 2 : Détection précise des balises Beacon
Cette méthode consiste à utiliser la détection précise (fonction BeaconDétectePrécis) pour obtenir la balise la plus proche et réaliser une opération spécifique. Exemple :
// Dans un musée, on souhaite afficher sur l'appareil du visiteur les informations // sur l'oeuvre qu'il est en train de regarder. On associe à chaque balise Beacon // le même UUID correspondant au musée et des numéros Major et Minor // permettant d'identifier chaque balise de manière unique. // On dispose une balise Beacon à côté de chaque oeuvre du musée. // L'application doit appeler la fonction BeaconDétectePrécis avec une variable // BeaconGroupe correspondant aux balises du musée. // La procédure callback passée en paramètre à la fonction sera appelée à chaque fois // qu'une nouvelle liste de balises Beacon sera détectée. Il suffit ensuite de trouver // la balise la plus proche pour en déduire l'oeuvre que regarde le visiteur et afficher // les informations correspondantes dans l'application.  // UUID du musée sUUID est une chaîne = "f4231ab6-5ef2-6c99-4229-af6c72e0446e" // Création d'une variable beaconGroupe correspondant aux balises du musée groupeMusée est un beaconGroupe groupeMusée.UUID = sUUID // Lancement de la détection BeaconDétectePrécis(groupeMusée, ProcDétection) PROCÉDURE INTERNE ProcDétection(tabInfo est un tableau de beaconInfoDétection) nDistanceMin est un entier BaliseLaPlusProche est un beaconInfoDétection POUR TOUT Information DE tabInfo SI nDistanceMin = 0 _OU_ Information.Distance < nDistanceMin BaliseLaPlusProche = Information FIN FIN // Affichage des informations sur l'oeuvre associée à la balise AfficheInfoOeuvre(BaliseLaPlusProche.Major, BaliseLaPlusProche.Minor) FIN
Version nécessaire
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|