PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Suivi GPS
Suivi GPS
Débuté par Christopher Gr., 22 mai 2017 12:40 - 14 réponses
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 22 mai 2017 - 12:40
Bonjour,

J'ai une application qui doit contenir 2 modes:

- mode tracking (toutes les minutes)
- mode tracking instantané (toutes les 5 secondes, pour un trajet par exemple)

Les données sont ensuite envoyées vers un webservice (PHP).

j'utilise pour le moment un thread qui est appelé toutes les minutes et toutes les 5 secondes, en fonction du mode, mais est-il possible d'améliorer le système avec les fonctions de GPS existantes ?
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 24 mai 2017 - 08:53
Petit up ?
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 24 mai 2017 - 10:05
Bonjour,

Inutile d'utiliser des threads. La fonction GPSSuitDéplacement prend un paramètre "délai".

https://doc.pcsoft.fr/?1000019206&name=gpssuitdeplacement_fonction&product=WM

Cdlt - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 24 mai 2017 - 10:33
Bonjour,

d'après ce que j'ai compris, la fonction GPSSuitDéplacement fonctionne uniquement lorsque l'application est en premier plan, ce qui n'est malheureusement pas mon cas :/ de +, j'ai testé la fonction, en passant en paramètre 600 centièmes, mais cela ne fonctionne pas :/

Il y aurait la fonction géoSuiviActive mais apparemment, la précision serait grandement diminuée, et en + je n'ai pas bien compris l'utilisation ....
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 24 mai 2017 - 11:25
Ce que j'ai testé:

Dans le code d'un bouton:

géoSuiviProcédure(ProcDeplacement)

géoSuiviActive(ValideActivationSuivi)


et les procédures:

Procedure ProcDeplacement(MaPosition est une geoPosition)

ToastAffiche(MaPosition..Latitude,toastCourt,cvHaut,chCentre)


Procedure ValideActivationSuivi(bSuiviActif est booléen, cErreur est une chaîne)

SI PAS bSuiviActif ALORS
Erreur(cErreur)
RETOUR
SINON
ToastAffiche("ok",toastCourt,cvHaut,chCentre)
FIN


Ensuite, j'ai testé en me déplaçant mais cela ne m'a affiché qu'une seule fois ma position .....
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 24 mai 2017 - 19:10
Bonjour,

Tu fais fausse route en utilisant GeoSuiviActive. Ce n'est pas du tout pareil ! Bien lire la documentation...

Ca ne marche pas car, déjà le suivi est de faible précision. Ensuite, dixit la documentation :

Attention : Le suivi est un suivi de faible précision. Les événements sont envoyés uniquement en cas de changements significatifs de la position et à des intervalles supérieurs à plusieurs minutes. A titre indicatif, les conditions d'envoi par plateforme sont les suivantes :
iPhone/iPad Les événements de changement de position ne sont pas envoyés si le déplacement est en dessous de 500 mètres ou si l’intervalle de temps est inférieur à 5 minutes (décembre 2014).
Android Les événements de changement de position sont envoyés à un intervalle approximatif allant de 30 secondes à 10 minutes selon la vitesse de déplacement.

https://doc.pcsoft.fr/?1000019277

Cdlt - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 25 mai 2017 - 23:46
Bonsoir,

merci de ta réponse.

Donc, en sachant que mon application doit pouvoir:

clic sur bouton A -> suivi GPS automatique, toutes les 30 minutes + envoi de la position vers webservice
clic sur bouton B -> suivi GPS automatique toutes les 5 à 10 secondes + envoi de la position vers webservice

ATTENTION: l'application peut être en avant ET en arrière plan.

Quelle serait la meilleure manière de mettre ceci en place?
Posté le 26 mai 2017 - 14:51
Bonjour

UN timer sur 5 secondes.
Dans le code du timer, si mode 5 secondes, traitement à chaque fois
Si mode 30 minutes, comparaison avec la dernière dateheure d'envoi et
traitement si nécessaire

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 5/25/2017 à 3:46 PM, Christopher Gr. a écrit :
Bonsoir,

merci de ta réponse.

Donc, en sachant que mon application doit pouvoir:

clic sur bouton A -> suivi GPS automatique, toutes les 30 minutes +
envoi de la position vers webservice
clic sur bouton B -> suivi GPS automatique toutes les 5 à 10 secondes +
envoi de la position vers webservice

ATTENTION: l'application peut être en avant ET en arrière plan.

Quelle serait la meilleure manière de mettre ceci en place?
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 27 mai 2017 - 10:30
Bonjour,

Et pour le fonctionnement en tâche de fond, en Android tu peux utiliser un thread persistant.

Par contre, je ne sais pas pour iOS. J'ignore même si c'est faisable, du moins en WL.

Cdlt - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 29 mai 2017 - 09:28
Bonjour,

merci je vais tester avec le timer, j'espère juste que ça n'est pas bloquant puisque l'application doit rester utilisable, même en mode "5 secondes" :)
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 29 mai 2017 - 09:47
J'ai testé avec la fonction timerSys() mais c'est malheureusement bloquant :S
Posté le 31 mai 2017 - 11:55
Bjr,

Christopher Gr. a exprimé avec précision :
> J'ai testé avec la fonction timerSys() mais c'est malheureusement bloquant :S

Tu mets dans un thread persistant, et c'est pas bloquant, et ca marche
meme l'appli arrétée

a plus

--
-------------------------------------------------------------
www.ctc-soft.com
Gestion biblo-documentaire (free-share)
Comptabilité shareware
Logiciels de Gestion de saisie terrain
Spécialisé Tournées de boulangers
-------------------------------------------------------------
Membre enregistré
169 messages
Popularité : +2 (4 votes)
Posté le 31 mai 2017 - 15:46
Bonjour,

ok merci mais comment puis-je arrêter ce thread persistant?
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 31 mai 2017 - 18:25
Bonjour,

Dans la procédure définie dans la fonction ThreadPersistant, tu mets juste une boucle avec un boolean.

Exemple :
TANTQUE isContinu
Multitâche(-500)
FIN

Quand isContinu passera à faux, le thread s'arrêtera tout seul.

Cdlt - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
1 message
Posté le 11 juin 2017 - 23:42
Bonjour,

Pour ma part, j'ai une application qui remonte la position toutes les 5 secondes, je n'ai pas trouvé mieux qu'un thread persistent qui boucle toutes les 5 secondes et qui test la valeur d'un booléen pour l'arrêter. Mais c'est souvent que j'ai des trous inexpliqués...

Je suis intéressé par vos expériences.

Cdlt