|
|
|
|
|
- Utilisation d'un service de détection du mobile
- Comment connaître les balises à proximité ?
- Divers
- Version nécessaire
- Bluetooth Low Energy
- Permissions requises
- Spécificités
BeaconDétecteEnArrièrePlan (Fonction) En anglais : BeaconDetectBackground Permet à l'application d'être notifiée lorsque l'appareil entre ou sort d'une zone correspondant au rayon d'émission d'un ensemble de balises Beacon. // 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 Syntaxe
Lancer une détection en arrière-plan sur plusieurs groupes de balises Beacon Masquer les détails
<Résultat> = BeaconDétecteEnArrièrePlan(<Tableau> , <Procédure WLangage>)
<Résultat> : Booléen - Vrai si la détection a bien été démarrée,
- Faux dans le cas contraire. Pour plus de détails sur l'erreur, utilisez la fonction ErreurInfo.
<Tableau> : Tableau de beaconGroupe Nom du tableau de variables de type beaconGroupe décrivant les groupes de balises Beacon à détecter. <Procédure WLangage> : Nom de procédure Nom de la procédure WLangage (également nommée "callback") appelée lorsque le périphérique entre ou sort de la zone d'émission d'un groupe de balises Beacon. Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(<Groupe>, <Type>) - Le paramètre <Groupe> est une variable de type beaconGroupe décrivant le groupe de balises Beacon pour lequel l'appareil vient d'entrer ou de sortir de la zone d'émission.
- Le paramètre <Type> est une constante de type entier correspondant à une des valeurs suivantes :
| | bdapEntrée | L'appareil est entré dans la zone d'émission du groupe de balises Beacon. | bdapSortie | L'appareil est sorti de la zone d'émission du groupe de balises Beacon. |
Attention : - Cette procédure doit être une procédure globale du projet. Dans le cas contraire, une erreur fatale sera déclenchée lors de l'appel de la fonction.
- Cette procédure ne doit pas accéder à l'interface de l'application. En effet, comme la procédure peut être appelée en arrière-plan, les fenêtres ne sont pas forcément ouvertes.
Lancer une détection en arrière-plan sur un groupe de balises Beacon Masquer les détails
<Résultat> = BeaconDétecteEnArrièrePlan(<Groupe de balises> , <Procédure WLangage>)
<Résultat> : Booléen - Vrai si la détection a bien été démarrée,
- Faux dans le cas contraire. Pour plus de détails sur l'erreur, utilisez la fonction ErreurInfo.
<Groupe de balises> : Variable de type beaconGroupe Nom de la variable de type beaconGroupe décrivant le groupe de balises Beacon à détecter. <Procédure WLangage> : Nom de procédure Nom de la procédure WLangage (également nommée "callback") appelée lorsque le périphérique entre ou sort de la zone d'émission d'un groupe de balises Beacon. Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(<Groupe>, <Type>) - Le paramètre <Groupe> est une variable de type beaconGroupe décrivant le groupe de balises Beacon pour lequel l'appareil vient d'entrer ou de sortir de la zone d'émission.
- Le paramètre <Type> est une constante de type entier correspondant à une des valeurs suivantes :
| | bdapEntrée | L'appareil est entré dans la zone d'émission du groupe de balises Beacon. | bdapSortie | L'appareil est sorti de la zone d'émission du groupe de balises Beacon. |
Attention : - Cette procédure doit être une procédure globale du projet. Dans le cas contraire, une erreur fatale sera déclenchée lors de l'appel de la fonction.
- Cette procédure ne doit pas accéder à l'interface de l'application. En effet, comme la procédure peut être appelée en arrière-plan, les fenêtres ne sont pas forcément ouvertes.
Remarques Utilisation d'un service de détection du mobile La fonction BeaconDétecteEnArrièrePlan active un service de détection du mobile, non lié à WINDEV Mobile. Lorsque ce service est activé, il se met en attente et détecte uniquement les entrées et sorties de zones. Attention : Pour économiser la consommation de batterie de l'appareil, la recherche des balises se trouvant à proximité de l'appareil est effectuée périodiquement avec des intervalles de temps pouvant aller jusqu'à plusieurs minutes. Il peut donc se passer un certain laps de temps entre l'arrivée (ou la sortie) de l'appareil dans le rayon d'émission d'un groupe de balises Beacon et la notification effective de l'application. Pour arrêter le service de détection du mobile, il faut au choix : Attention : La fermeture et la ré-exécution de l'application n'a pas de conséquence sur le fonctionnement du service de détection du mobile. Comment connaître les balises à proximité ? La détection des balises Beacon effectuée par la fonction BeaconDétecteEnArrièrePlan est indépendante du cycle de vie de l'application (cette détection est effectuée par un service du mobile, non lié à WINDEV Mobile). - Si l'application est en arrière-plan, elle continuera à recevoir les notifications d'entrée et de sortie.
- Si l'application est arrêtée puis relancée dans la même zone, aucune notification ne sera effectuée. Il est nécessaire de sortir de la zone pour recevoir une notification de sortie. De même, il est nécessaire de rentrer dans la zone pour recevoir une notification d'entrée.
- Si l'application est arrêtée, elle sera automatiquement démarrée lors de la détection d'un groupe de balises Beacon. Dans ce cas, les traitements exécutés sont les suivants :
- code d'initialisation du projet,
- procédure WLangage ("callback") passée en paramètre de la fonction BeaconDétecteEnArrièrePlan.
La première fenêtre de l'application ne sera pas ouverte.
Pour connaître précisément la liste des balises beacon qui se trouvent à proximité de l'appareil ainsi que leur distance, plusieurs solutions sont disponibles : - Appeler la fonction BeaconDétectePrécis. Cette fonction est beaucoup plus consommatrice d'énergie et pour préserver la batterie de l'appareil, il est recommandé de l'appeler par exemple :
- dans la procédure WLangage (appelée "callback") de la fonction BeaconDétecteEnArrièrePlan.
- au lancement de l'application.
- dans le traitement de mise en avant-plan de l'application.
- Stocker la zone où se trouve l'appareil via la procédure WLangage de la fonction BeaconDétecteEnArrièrePlan. Ce stockage peut être effectué dans un fichier.
Divers - Il est possible de lister les détections actives avec la fonction BeaconListeDétectionEnArrièrePlan.
- Si un groupe de balises ayant les mêmes informations (UUID, major, minor) est ajouté plusieurs fois dans la liste des détections actives, seul le dernier ajout sera pris en compte.
Composante : wd300android.aar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|