PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile 2024 → Suivi GPS
Suivi GPS
Iniciado por Christopher Gr., 22,may. 2017 12:40 - 14 respuestas
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 22,mayo 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 ?
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 24,mayo 2017 - 08:53
Petit up ?
Miembro registrado
637 mensajes
Popularité : +36 (36 votes)
Publicado el 24,mayo 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
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 24,mayo 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 ....
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 24,mayo 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 .....
Miembro registrado
637 mensajes
Popularité : +36 (36 votes)
Publicado el 24,mayo 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
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 25,mayo 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?
Publicado el 26,mayo 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?
Miembro registrado
637 mensajes
Popularité : +36 (36 votes)
Publicado el 27,mayo 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
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 29,mayo 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" :)
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 29,mayo 2017 - 09:47
J'ai testé avec la fonction timerSys() mais c'est malheureusement bloquant :S
Publicado el 31,mayo 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
-------------------------------------------------------------
Miembro registrado
169 mensajes
Popularité : +2 (4 votes)
Publicado el 31,mayo 2017 - 15:46
Bonjour,

ok merci mais comment puis-je arrêter ce thread persistant?
Miembro registrado
637 mensajes
Popularité : +36 (36 votes)
Publicado el 31,mayo 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
Miembro registrado
1 mensaje
Publicado el 11,junio 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