PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV Mobile 2024 → Suivi GPS
Suivi GPS
Iniciado por Christopher Gr., mai., 22 2017 12:40 PM - 14 respostas
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 22 2017 - 12:40 PM
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 ?
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 24 2017 - 8:53 AM
Petit up ?
Membro registado
637 mensagems
Popularité : +36 (36 votes)
Publicado em maio, 24 2017 - 10:05 AM
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
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 24 2017 - 10:33 AM
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 ....
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 24 2017 - 11:25 AM
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 .....
Membro registado
637 mensagems
Popularité : +36 (36 votes)
Publicado em maio, 24 2017 - 7:10 PM
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
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 25 2017 - 11:46 PM
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 em maio, 26 2017 - 2:51 PM
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?
Membro registado
637 mensagems
Popularité : +36 (36 votes)
Publicado em maio, 27 2017 - 10:30 AM
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
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 29 2017 - 9:28 AM
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" :)
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 29 2017 - 9:47 AM
J'ai testé avec la fonction timerSys() mais c'est malheureusement bloquant :S
Publicado em maio, 31 2017 - 11:55 AM
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
-------------------------------------------------------------
Membro registado
169 mensagems
Popularité : +2 (4 votes)
Publicado em maio, 31 2017 - 3:46 PM
Bonjour,

ok merci mais comment puis-je arrêter ce thread persistant?
Membro registado
637 mensagems
Popularité : +36 (36 votes)
Publicado em maio, 31 2017 - 6:25 PM
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
Membro registado
1 mensagem
Publicado em junho, 11 2017 - 11:42 PM
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