PC SOFT

ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Home | Sign in | English EN
  • Cas particuliers
  • Fonctionnement sous iPhone/iPad
  • Permissions requises
  • Fonctionnalité d'application requise
  • Navigateurs autorisant la géolocalisation
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Récupère l'état d'activation du fournisseur de géolocalisation ou demande à être notifié lors du changement d'état.
Versions 16 et supérieures
WEBDEV - Code Navigateur Cette fonction est désormais disponible en code Navigateur.
WEBDEV - Code Navigateur Récupère uniquement l'état d'activation du fournisseur de géolocalisation.
Nouveauté 16
WEBDEV - Code Navigateur Cette fonction est désormais disponible en code Navigateur.
WEBDEV - Code Navigateur Récupère uniquement l'état d'activation du fournisseur de géolocalisation.
WEBDEV - Code Navigateur Cette fonction est désormais disponible en code Navigateur.
WEBDEV - Code Navigateur Récupère uniquement l'état d'activation du fournisseur de géolocalisation.
Versions 17 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Nouveauté 18
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Versions 21 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Versions 22 et supérieures
WINDEVWindows Cette fonction est désormais disponible pour les applications WINDEV.
Nouveauté 22
WINDEVWindows Cette fonction est désormais disponible pour les applications WINDEV.
WINDEVWindows Cette fonction est désormais disponible pour les applications WINDEV.
Exemple
// Teste l'état du fournisseur GPS
SI GPSEtat() = gpsDésactivé ALORS
Info("La géolocalisation n'est pas active.")
FIN
AndroidWidget AndroidiPhone/iPadWidget iOSCatalystUniversal Windows 10 App
// Branche une procédure de notification en cas de modification de l'état du GPS
GPSEtat(ProcEtatGPS)
// Procédure appelée à chaque modification de l'état du GPS
PROCEDURE ProcEtatGPS(Etat_GPS est un entier)

SI Etat_GPS = gpsIndisponible ALORS
Info("La géolocalisation est temporairement indisponible.")
FIN
Syntaxe

Récupérer l'état d'activation du fournisseur Masquer les détails

<Résultat> = GPSEtat()
<Résultat> : Constante de type Entier
Etat d'activation du fournisseur de localisation. Les valeurs suivantes peuvent être renvoyées :
gpsActivéLe fournisseur est activé.
gpsDésactivéLe fournisseur est désactivé.
gpsErreurErreur pendant la récupération de l'état d'activation du fournisseur. Utilisez la fonction ErreurInfo pour obtenir le détail de l'erreur.
WINDEVWEBDEV - Code NavigateurUniversal Windows 10 App Cette constante n'est pas disponible.
WINDEVAndroidWidget AndroidiPhone/iPadWidget iOSCatalystUniversal Windows 10 App

Demander une notification lors d'un changement d'état d'activation Masquer les détails

GPSEtat(<Procédure WLangage>)
<Procédure WLangage> : Nom de procédure
Procédure WLangage (également nommée "callback") appelée à chaque notification.
Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(<Etat>)
Le paramètre <Etat> est une constante de type entier correspondant au nouvel état du fournisseur.
Il peut prendre les valeurs suivantes :
gpsActivéLe fournisseur a été activé par l'utilisateur.
gpsDésactivéLe fournisseur a été désactivé par l'utilisateur.
gpsDisponibleLe fournisseur est disponible.
gpsHorsServiceLe fournisseur est hors-service.
gpsIndisponibleLe fournisseur est temporairement indisponible.
Remarques

Cas particuliers

  • AndroidWidget AndroidiPhone/iPadWidget iOSCatalyst Il est conseillé d'initialiser les paramètres du fournisseur de localisation à l'aide de la fonction GPSInitParamètre avant de récupérer l'état de ce fournisseur.
  • AndroidWidget AndroidiPhone/iPadWidget iOSCatalystUniversal Windows 10 App Pour ne plus recevoir de notification de changement d'état, utilisez la fonction GPSEtat en lui passant une chaîne vide ("") en paramètre ou utilisez la fonction GPSTermine.
Versions 17 et supérieures
iPhone/iPadWidget iOSCatalyst

Fonctionnement sous iPhone/iPad

Au premier lancement d'une fonction GPS, le système demande à l'utilisateur l'autorisation d'effectuer une géolocalisation. En cas de refus de l'utilisateur, toutes les fonctions GPS utilisées dans la suite de l'application échoueront (erreur fatale).
Pour ré-autoriser l'utilisation du GPS pour cette application, il est nécessaire de modifier la configuration système de l'application.
Nouveauté 17
iPhone/iPadWidget iOSCatalyst

Fonctionnement sous iPhone/iPad

Au premier lancement d'une fonction GPS, le système demande à l'utilisateur l'autorisation d'effectuer une géolocalisation. En cas de refus de l'utilisateur, toutes les fonctions GPS utilisées dans la suite de l'application échoueront (erreur fatale).
Pour ré-autoriser l'utilisation du GPS pour cette application, il est nécessaire de modifier la configuration système de l'application.
iPhone/iPadWidget iOSCatalyst

Fonctionnement sous iPhone/iPad

Au premier lancement d'une fonction GPS, le système demande à l'utilisateur l'autorisation d'effectuer une géolocalisation. En cas de refus de l'utilisateur, toutes les fonctions GPS utilisées dans la suite de l'application échoueront (erreur fatale).
Pour ré-autoriser l'utilisation du GPS pour cette application, il est nécessaire de modifier la configuration système de l'application.
AndroidWidget Android

Permissions requises

L’utilisation de cette fonction entraîne la modification des permissions requises par l’application.
Permission requise : ACCESS_FINE_LOCATION.
Spécificité Android 10 : Une nouvelle permission a été mise en place dans Android 10 pour les fonctions permettant la localisation de l'appareil : ACCESS_BACKGROUND_LOCATION.
Cette permission permet d'autoriser l'utilisation de la fonction lorsque l'application est en arrière-plan.
Lorsque cette permission est ajoutée à l'application, une fenêtre permet à l'utilisateur de :
  • accepter l'accès à la position de l'appareil avec l'application en arrière-plan,
  • limiter l'accès à la position à l'application active,
  • refuser l'accès à la position.
L'utilisateur peut également modifier son autorisation à posteriori dans les réglages de Android.
Spécificité Android 11 : L'utilisation de cette fonction nécessite la mise en place de la permission : ACCESS_BACKGROUND_LOCATION permettant la localisation de l'appareil.
Cette permission permet d'autoriser l'utilisation de la fonction lorsque l'application est en arrière-plan.
Si l'application nécessite la localisation en arrière-plan, il faut :
  • Ajouter manuellement la permission "ACCESS_BACKGROUND_LOCATION" dans l'assistant de génération de l'application Android.
  • Demander explicitement la permission de localisation en arrière-plan à l'utilisateur avec la fonction PermissionDemande. Par exemple :
    PermissionDemande(permLocalisationEnArrièrePlan, Callback)
    PROCÉDURE INTERNE Callback(p est une Permission)
    SI p.Accordé ALORS
    // Utilisation possible des fonctions nécessitant la localisation en arrière-plan
    FIN
    FIN
Une fenêtre permet à l'utilisateur de :
  • accepter l'accès à la position de l'appareil avec l'application en arrière-plan,
  • limiter l'accès à la position à l'application active,
  • refuser l'accès à la position.
L'utilisateur peut également modifier son autorisation à posteriori dans les réglages de Android.
Remarques :
  • Respectez les spécifications Google concernant les applications utilisant la localisation en arrière-plan. Pour plus de détails, consultez https://support.google.com/googleplay/android-developer/answer/9799150. Si ces conditions ne sont pas remplies (notamment les conditions d'information de l'utilisateur), les applications pourront ne pas obtenir l'autorisation de publication sur Play Store.
  • La demande de permission de localisation en arrière-plan ne doit être effectuée que si la permission de localisation a été accordée. Dans le cas contraire, la fonction PermissionDemande échouera.
  • Si le choix de l'utilisateur lors de la demande de permission de localisation en arrière-plan est plus restrictif que le choix effectué lors de la demande de permission de localisation, l'application sera automatiquement relancée.
  • Sur les appareils en version inférieure à Android 10, si la permission de localisation a été accordée à l'application, la demande de permission de localisation en arrière-plan sera accordée sans affichage de fenêtre.
Versions 21 et supérieures
Universal Windows 10 App

Fonctionnalité d'application requise

L’utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Géolocalisation
Cette fonctionnalité permet aux applications d'accéder aux données de géolocalisation de l'appareil ou de l'ordinateur.
Nouveauté 21
Universal Windows 10 App

Fonctionnalité d'application requise

L’utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Géolocalisation
Cette fonctionnalité permet aux applications d'accéder aux données de géolocalisation de l'appareil ou de l'ordinateur.
Universal Windows 10 App

Fonctionnalité d'application requise

L’utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Géolocalisation
Cette fonctionnalité permet aux applications d'accéder aux données de géolocalisation de l'appareil ou de l'ordinateur.
WEBDEV - Code Navigateur

Navigateurs autorisant la géolocalisation

Attention : La géolocalisation n'est disponible que sur certains navigateurs récents :
  • FireFox à partir de la version 3.5,
  • Chrome à partir de la version 5.0.342.1,
  • Opéra à partir de la version 10.6,
  • Safari à partir de la version 5.0.
Lors de l'appel à une fonction de géolocalisation, le navigateur demande l'autorisation de localiser.
Liste des exemples associés :
WM Geolocalisation Exemples multiplateforme (WINDEV Mobile) : WM Geolocalisation
[ + ] Cet exemple présente comment gérer des recherches de proximité avec géolocalisation :
- recherche autour de moi
- recherche dans une ville, à une adresse donnée, proche d'une adresse.
Les résultats apparaissent dans une zone répétée et dans une carte avec des marqueurs.
Android GPS Android (WINDEV Mobile) : Android GPS
[ + ] Cet exemple montre l'utilisation des fonctions GPS du WLangage dans une application Android.
Il permet de récupérer à intervalle régulier :
- La latitude
- La longitude
- L'altitude
- La vitesse
- la direction
Composante : wd260java.dll
Minimum version required
  • Version 15
Comments
Exemplo
https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/3701-trabalhando-com-gps/read.awp
Boller
13 Mar. 2021
EXAMPLE: GPS status and on / off GPS via Java
FONTE:

http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/9-windev-mobile-verifica-gps-ligado-posicao/read.awp

---x---

Example 01:
#####################################################

Procedure GPS_VerificaStatus()

Retorno is string = ""

GloLatitude , GloLongitude is real = 0

GPSInitParameter(gpsSatellite,gpsPrecisionHigh)

// Recuperação da posição
Retorno is geoPosition = GPSGetPosition() // 2000 = Intervalo máxo,p de 20 segundos

GloLatitude = NumToString(Retorno..Latitude,"+-10.6f")
GloLongitude = NumToString(Retorno..Longitude,"+-10.6f")

Retorno = GloLatitude +"; "+ GloLongitude

IF GloLatitude = 0 AND GloLongitude = 0 OR GloLatitude = null AND GloLongitude = null
ToastDisplay("GPS Desligado!!!")
END

RESULT(Retorno )

---x---



Example 02:
#####################################################

//Java GPS_On

import android.app.Activity;
import java.lang.*;
import android.util.*;
import java.lang.Exception;
import android.util.Log;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

PUBLIC static void GPS_On()
{
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", True);
getActiviteEnCours().sendBroadcast(intent);
}

---x---

//Java GPS_Off

import android.app.Activity;
import java.lang.*;
import android.util.*;
import java.lang.Exception;
import android.util.Log;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

PUBLIC static void GPS_Off()
{
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", False);
getActiviteEnCours().sendBroadcast(intent);
}


---x---

OBS.:
You must enable these options in the Android Manifest XML Windev Mobile

A) Android.Permission.WRITE_SECURE_SETTINGS

B) Android.Permission.WRITE_SETTINGS

---x---



Example 03
#####################################################
Another way to test whether this off GPS:

// GLOBAL
GloGpsAtivado is boolean = False

//Open Window
Procedure GPS_Inicializar()

GPSInitParameter(gpsSatellite,gpsPrecisionHigh +gpsSpeed)

IF GPSStatus() <> gpsEnabled THEN

Popup("Para melhorar a precisão da sua localização, ative o seu GPS","L")

gloStatusGps = False

ELSE
ChangeGPSStatus(GPSStatus())
END

GPSStatus(ChangeGPSStatus)

---x---

//Procedure Global

Procedure ChangeGPSStatus(nStatus)
IF gnCurrentStatus = nStatus THEN
RETURN
END

gnCurrentStatus = nStatus

IF nStatus = gpsEnabled OR nStatus = gpsAvailable THEN

GPSFollowMovement(GetPosition,300)

END

SWITCH nStatus
CASE gpsEnabled
GloGpsAtivado = True // <------------- Ligado
CASE gpsDisabled
GloGpsAtivado = False // <------------- Desligado
gloStatusGps = False
CASE gpsOffService
CASE gpsUnavailable
CASE gpsAvailable
END

adrianoboller
14 Feb. 2015