ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

This content has been translated automatically.  Click here  to view the French version.
Help / WLanguage / WLanguage functions / Communication / Beacon functions
  • Overview
  • Principle
  • Implementation
  • Necessary version
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
Others
Stored procedures
Overview
A "beacon" is a hardware transmitter that can "dialog" on a small perimeter with smartphones or tablets via a Bluetooth connection. The technology used is the one of BTLE (Bluetooth Low Energy).
The Beacon can for example indicate the proximity of an art masterpiece in a museum; the application can display the explanation text, or it can start a video or an audio file.
On the commercial side, a Beacon can trigger a message regarding a bargain on a nearby product. A Beacon can also inform a user that he is not far away from a store that sells a product he is looking for.
Principle
An application asks the phone to be warned when one or more Beacons are found nearby. This application can be closed immediately, therefore it consumes no battery.
When the phone detects a Beacon, it restarts the application and transmits the Beacon information.
Furthermore, the phone warns the application when it exits from the emission area of Beacon.
Implementation
Several WLanguage functions and 2 specific types can be used to manage Beacons.
AndroidAndroid Widget Please note: Beacon management on Android uses the Android Beacon Library module, which is subject to licensing. You must comply with this license, available from the WINDEV Mobile license.
Depending on the use mode of your application, you have the ability to use one of the following methods:
  • Method 1: Automated detection of Beacon tags
    This method consists in detecting groups of Beacons in the background with BeaconDetectBackground. A specific action is performed when a group of Beacons is detected. Example:
    // 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 is string = "f4231ab6-5ef2-6c99-4229-af6c72e0446e"
    // Création d'une variable beaconGroupe par salle
    groupeSalle1 is beaconGroup
    groupeSalle1.UUID = sUUID
    groupeSalle1.Major = 1
    groupeSalle2 is beaconGroup
    groupeSalle2.UUID = sUUID
    groupeSalle2.Major = 2
    groupeSalle3 is beaconGroup
    groupeSalle3.UUID = sUUID
    groupeSalle3.Major = 3
    groupeSalle4 is beaconGroup
    groupeSalle4.UUID = sUUID
    groupeSalle4.Major = 4
    // Lancement de la détection
    tabGroupeBeacon is array of beaconGroup = [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. 
    BeaconDetectBackground(tabGroupeBeacon, ProcDétection)
    PROCEDURE ProcDétection(Groupe is beaconGroup, nType is int)
    
    IF nType = bdbLeave THEN 
    	// Arrêt de la piste en cours
    	RETURN
    END
    
    IF nType = bdbEnter THEN
    	SWITCH Groupe.Major
    		CASE 1
    		// Lecture de la piste de la salle 1
    		CASE 2
    		// Lecture de la piste de la salle 2
    		...
    	END
    END
  • Method 2: Precise detection of Beacon tags
    This method consists in using the precise detection (BeaconDetectPrecise) to get the nearest Beacon and perform a specific operation. Example:
    // 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 is string = "f4231ab6-5ef2-6c99-4229-af6c72e0446e"
    // Création d'une variable beaconGroupe correspondant aux balises du musée
    groupeMusée is beaconGroup
    groupeMusée.UUID = sUUID
    // Lancement de la détection
    BeaconDetectPrecise(groupeMusée, ProcDétection)
    INTERNAL PROCEDURE ProcDétection(tabInfo is array of beaconDetectionInfo)
    	nDistanceMin is int 
    	BaliseLaPlusProche is beaconDetectionInfo
    	FOR EACH Information OF tabInfo
    		IF nDistanceMin = 0 _OR_ Information.Distance < nDistanceMin
    			BaliseLaPlusProche = Information
    		END
    	END
    	// Affichage des informations sur l'oeuvre associée à la balise
    	AfficheInfoOeuvre(BaliseLaPlusProche.Major, BaliseLaPlusProche.Minor)
    END

Necessary version

AndroidAndroid Widget Beacon functions are only available on Android 4.3 or later (API level 18).
A fatal error occurs if the function is used with an earlier system version.
To determine the version of Android the application is running on, use SysAndroidVersion.
iPhone/iPadIOS Widget Beacon functions are only available on iOS11 or later.
Minimum version required
  • Version 23
Comments
Click [Add] to post a comment

Last update: 03/28/2025

Send a report | Local help