Mon application vérifie à un moment donné si un utilisateur se trouve à un emplacement donné. J'utilise le gestionnaire d'alarme pour lancer un service qui fait cet appel:Android - Obtenir de manière fiable l'emplacement actuel
locationManager.requestLocationUpdates(bestProvider, 0, 0, listener);
Et vérifie également:
locationManager.getLastKnownLocation(bestProvider);
Mais je vais avoir des problèmes lors de l'exécution sur un périphérique réel. Pour une chose, getLastKnownLocation
est probablement le dernier endroit où le GPS était, ce qui pourrait être n'importe où (c'est-à-dire, il pourrait être miles de l'emplacement actuel de l'utilisateur). Donc, je vais attendre requestLocationUpdates
rappels, et si elles ne sont pas là dans les deux minutes, retirez l'auditeur et abandonner, non? Incorrect, car si l'emplacement de l'utilisateur est déjà stable (c'est-à-dire qu'il a utilisé le GPS récemment et qu'il n'a pas bougé), alors mon écouteur ne sera jamais appelé car l'emplacement ne change pas. Mais le GPS fonctionnera jusqu'à ce que mon auditeur soit retiré, vidant la batterie ...
Quelle est la bonne façon d'obtenir l'emplacement actuel sans confondre un ancien emplacement pour l'emplacement actuel? Cela ne me dérange pas d'attendre quelques minutes.
EDIT: Il est possible que je me trompe sur le fait que l'auditeur ne soit pas appelé, cela peut prendre un peu plus de temps que je ne le pensais ... Difficile à dire. J'apprécierais une réponse définitive encore.
Pouvez-vous fournir un exemple de code? Par exemple, comment voulez-vous attendre 2 minutes ou quelque chose comme ça si l'écouteur de localisation n'est pas appelé? – noah
Extrait de code ajouté – Fedor