PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Problème Signal GPS
Problème Signal GPS
Débuté par Monsieur RÉDA, 12 mar. 2018 18:42 - 4 réponses
Membre enregistré
217 messages
Popularité : +12 (12 votes)
Posté le 12 mars 2018 - 18:42
Bonjour à toutes et à tous,
j'ai développé une application sur android qui utilise entre autres les fonctionnalités gps du smartphone.

l'utilisateur de l'application a la possibilité d'enregistrer la liste de lieux dans la base de données ainsi que leurs positions gps.
Pour récuperer la position GPS du smartphone j'utilise le procédure suivante :
Procedure RecuperePositionGPS()
GPSInitParamètre(gpsSatellite,gpsPrécisionElevée);
RENVOYER GPSRécupèrePosition(1000);


par ailleurs, je trace toutes les positions du déplacement de l'uitlisateurs dans un fichier (Position_Mobile) à l'aide de GPSSuiteDeplacement.
Pour cela, je procède ainsi à l'initialisation de la fenêntre principale du projet :
GPSInitParamètre(gpsSatellite);
GPSSuitDéplacement(ProcDeplacement,200);


et voici la procédure qui trace les positions :

Procedure ProcDeplacement(pos est une geoPosition)

HRAZ(Position_Mobile)
dh est une DateHeure;

Position_Mobile.Date=DateSys();
Position_Mobile.Heure=HeureSys();
dh..PartieDate=DateSys();
dh..PartieHeure=Position_Mobile.Heure;
Position_Mobile.DateHeure=dh;
Position_Mobile.Latitud=pos..Latitude;
Position_Mobile.Longitud=pos..Longitude;
Position_Mobile.Vitess=v;
HAjoute(Position_Mobile);


Jusqu'ici aucun souci, du moins généralement....
L'utilisateur arrive à enregistrer des lieu ainsi que leurs position gps, la trace fonctionne très bien, toutes les positions sont bien stockées dans le fichier "Positions_Mobile",
le problème, c'est qu'il arrive dans "certain cas" que l'utilisateur n'arrive plus à détecter la position d'un lieu (procédure RécuperePositionGPS renvoie (0,0) )
Mon clients se plaint très souvent à ce sujet,
mes réponses dans ce cas, sont très claires :
il s'agit d'un problème du signal gps dans le smartphone, des fois l'utilisateur est à l'interieur d'un local, ce qui explique l'absence de signal.
Le client me précise que l'utilisateur est bel est bien à l'exterieur et aucun immeuble à l'horizon !
je dis alors qu'il est possible que la zone où se situe l'utilisateur n'est pas couverte par assez de satellites pour avoir un bon signal
le problème c'est que cela arrive aléatoirement, certains jours dans une certaine zone, le signal est très bon, et puis pour une raison qui m’échappe le signal disparaît dans cette même zone.
Je suis conscient que les satellites sont en déplacement ce qui pourrait peut être expliquer ce phénomène mais je me dis que peut être que peut être que le problème est ailleurs ou peut être que je m'y prends mal ?

Auriez vous rencontré ce type de problème ?

Je précise que j'ai fais l’expérience sur 3 smartphones

Merci pour toute réponse que vous m'apporteriez.

Réda
Posté le 13 mars 2018 - 09:38
Ca ne me semble pas une bonne idée d'appeler la fonction GPSInitParamètre à chaque fois que vous demandez une position.
Un seul appel, dans l'init du projet par exemple, est suffisant.
De plus si la position récupéré est invalide (0,0), vous pouvez peut-être testé EreurDétectée et ErreurInfo pour savoir s'il n'y a pas eu une erreur et retourner GPSDernièrePosition pour retourner la dernière position connue.
Membre enregistré
217 messages
Popularité : +12 (12 votes)
Posté le 13 mars 2018 - 10:29
Bonjour et merci de votre réponse
Ok pour gpsinitparametre. Je vais limiter son appel uniquement à l'initialisation du projet.
Dans mon cas, lorsque la pos 0 0 est retournée cela veut dire que le téléphone ne detecte aucun signal gps. Pour cobfirmer cette hypothèse jai utilisé des appli gratuite sur play store (gps tool) pour connaitre la force du signal gps ainsi que le nombre de satellites qui est dans certains cas nul.
Posté le 13 mars 2018 - 10:40
autre idée : appeler GPSinitParamètre avec la constnate gpsAuto. Dans le cas où il n'y aurait pas de satelite la position sera récupérée en fonction des réseaux mobiles alentours. C'est moins précis mais c'est mieux que pas de position du tout.
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 13 mars 2018 - 15:03
Bonjour Monsieur RÉDA,

Il faut utiliser la propriété ..PositionValide de la variable de type geoPosition.

Si cette propriété renvoie faux, il ne faut pas enregistrer la position et éventuellement effectuer une demande de position GPS.

Idem avec la direction, précision et vitesse.

Bon dev!

Jérôme