PnX-SI / gn_mobile_occtax

Application mobile pour la saisie dans le module Occtax de GeoNature
GNU General Public License v3.0
13 stars 5 forks source link

Localisation GPS sans boussole #109

Closed camillemonchicourt closed 2 years ago

camillemonchicourt commented 2 years ago

Nous avons récemment identifié que la localisation GPS ne fonctionnait pas sur certains terminaux (Samsung Galaxy A10 et A12). Après quelques recherches, on a identifié que ces terminaux avaient bien une puce GPS mais pas de boussole.

En récupérant des logs au moment où l'on demandé la position GPS sur ces terminaux avec la commande adb logcat | grep fr.geonature ceux-ci ont confirmé que c'est bien l'absence de boussole sur ces terminaux qui bloquait le récupération de leur position GPS :

02-02 22:23:[35.478 21954 21954](callto:35.478 21954 21954) I fr.geonature.maps.ui.overlay.CompassOrientationProvider: accelerometer sensor listener registered: true, magnetic field sensor registered: false
02-02 22:23:[35.478 21954 21954](callto:35.478 21954 21954) I fr.geonature.maps.ui.overlay.MyLocationOverlay: enableMyLocation: false
02-02 22:23:[35.479 21954 21954](callto:35.479 21954 21954) I fr.geonature.maps.ui.overlay.MyLocationOverlay: onLocationChanged: null

@sgrimault a identifié qu'on a bien l'accéléromètre mais pas le capteur du champ magnétique. Du coup quand on clique sur le bouton de position avec ces terminaux, on obtient enableMyLocation: false. L'application ne poursuit pas plus loin. Il a donc fait quelques petites corrections pour désactiver et désolidariser la partie boussole de la position GPS si les conditions ne sont pas réunies.

Il a alors fait une nouvelle version du module Maps (https://github.com/PnX-SI/gn_mobile_maps) avec des petites corrections sur la partie résolution GPS ainsi que sur la partie boussole. Cette dernière est maintenant dissociée de la résolution GPS et si les capteurs ne sont pas disponibles, elle se désactive d'elle-même de manière silencieuse indépendamment de la résolution de la position GPS.

Précisions de @sgrimault sur le fonctionnement du GPS :

Coté module cartographique, la méthode de résolution de la position GPS est très classique : Elle requiert les permissions suivantes :

  • ACCESS_COARSE_LOCATION (pour une résolution rapide approximative sans devoir passer par le GPS du terminal)
  • ACCESS_FINE_LOCATION (pour une résolution précise mais plus longue en impliquant le GPS du terminal)

Puis fait appel au service LocationManager d'Android en déclarant les deux méthodes de résolutions (décrites ci-dessus). Une bonne partie de ce code repose sur ce qu'offre déjà la bibliothèque osmdroid.

La boussole est basée sur les capteurs du terminal, notamment l'accéléromètre et la mesure du champ magnétique et ne requiert aucune permission particulière et ne repose pas sur la position GPS. Sa précision dépend de beaucoup des capteurs embarqués (certains peuvent ne pas être présents ce qui affecte la précision, tous les capteurs ne se valent pas selon les modèles et les constructeurs, ce qui affecte aussi la précision).

camillemonchicourt commented 2 years ago

Corrigé dans la version 1.3.1

AudreyEnGuyane commented 1 year ago

Bonjour, je sais que le sujet est clos mais j'aimerai savoir si on est dans ce cas (sinon, je referai un sujet): est-ce que la position était systématiquement inaccessible? Dans notre cas, occtax capte bien en milieu ouvert mais, sous couvert forestier dense, c'est bien souvent mort (on a eu le cas sur de multiple téléphones de marques différentes). Je me demandais si la précision de la position était bridée pour qu'occtax prenne en compte un point GPS...

camillemonchicourt commented 1 year ago

Je ne comprends pas la question et le contexte. En quelle version de Occtax-mobile êtes-vous ?

AudreyEnGuyane commented 1 year ago

On a la version 2.4. Tant qu'on est en milieu ouvert, il n'y a pas de soucis mais quand on part dans le sous-bois (forêt de Guyane donc amazonien bien dense), occTax bloque la saisie car il n'arrive pas à prendre un point GPS (on a aucun autre élément de repérage dans l'enfer vert...). Je n'arrive pas à savoir si c'est dû à un paramètre d'acquisition du signal dans occtax (par exemple: occTax ne récupère que les géolocalisation dont la précision est inférieure à 15m?) ou a un paramètre extérieur à OccTax (coup de la boussole ? réception trop faible du signal satellite?).

camillemonchicourt commented 1 year ago

OK mais as-tu la même réception dans d'autres applications utilisant le GPS sur ce même appareil dans les mêmes conditions ? Ou alors c'est uniquement dans Occtax que la position GPS n'est pas disponible ?

DonovanMaillard commented 1 year ago

L'application occtax elle-même ne gère pas le GPS, elle utilise le GPS de l'appareil qui lui retourne la position de l'appareil.

En théorie, si occtax n'arrive pas à détecter votre position, les autres applications de l'appareil (google maps, orux map ou autre) ne devraient pas capter de position non plus.

Si les autres applis arrivent à vous localiser et pas occtax, en effet il faudra voir avec sébastien s'il a défini une précision requise ou autre.

gildeluermoz commented 1 year ago

Il existe de nombreuses applications qui permettent de visualiser le nombre de satellites captés et la précision du signal. par exemple : https://play.google.com/store/apps/details?id=com.chartcross.gpstest&hl=fr&gl=US ou https://play.google.com/store/apps/details?id=com.silentlexx.gpslock&hl=fr&gl=US Vous pourrez ainsi tester si la position GPS est acquise ou pas. Il faut au moins 3 ou 4 sattelites pour une localisation, même imprécise. Si la localisation nest pas acquise, aucun logiciel ne pourra proposer une position.