PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

Nouveauté WINDEV Mobile 23 !
  • Utilisation d'un service de détection du mobile
  • Comment connaître les balises à proximité ?
  • Divers
  • Version nécessaire
  • Permissions requises
  • Spécificités
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
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.
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
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> , <Nom de la procédure>)
<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.
<Nom de la procédure> : Chaîne de caractères (avec ou sans guillemets)
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éeL'appareil est entré dans la zone d'émission du groupe de balises Beacon.
    bdapSortieL'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> , <Nom de la procédure>)
<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.
<Nom de la procédure> : Chaîne de caractères (avec ou sans guillemets)
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éeL'appareil est entré dans la zone d'émission du groupe de balises Beacon.
    bdapSortieL'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.
AndroidWidget Android

Version nécessaire

Les fonctions de gestion des balises Beacon sont disponibles uniquement sur les appareils disposant d'une version d'Android supérieure ou égale à la version 4.3 (api level 18).
Si la fonction est utilisée avec une version antérieure du système, une erreur fatale sera déclenchée.
Pour connaître la version du système Android sur laquelle s’exécute l’application, utilisez la fonction SysVersionAndroid.
AndroidWidget Android L'appareil doit supporter la technologie Bluetooth Low Energy (Bluetooth LE).
AndroidWidget Android

Permissions requises

L'utilisation de cette fonction entraîne la modification des permissions requises par l'application.
Permission requise : ACCESS_COARSE_LOCATION : Permet à l'application d'obtenir la position approximative de l'appareil.
iPhone/iPad

Spécificités

  • Il est possible de détecter 20 groupes au maximum. Si le nombre de groupes total à détecter dépasse ce nombre, une erreur sera renvoyée.
  • Il est nécessaire de disposer d'un accès à un réseau pour faire fonctionner correctement la détection.
  • Si l'application a été lancée en arrière-plan, il est important de ne pas effectuer de traitements longs dans la procédure WLangage (callback). En effet, le système iOS termine automatiquement l'exécution de l'application au bout d'une dizaine de secondes.
  • L'utilisation de cette fonction entraîne la modification des permissions requises par l'application.
    Permissions requises :
    • Location Always Usage Description
    • Location When In Use Usage Description
    • Location Always And When In Use Usage Description.
Composantes
Android wd230android.jar
Version minimum requise
  • Version 23
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire