11
votes

Application Tableau erroné jusqu'à ce que l'application Open Inbuilt Google Map

J'ai développé une application utilisée pour trouver l'emplacement actuel de l'appareil. J'ai utilisé une API de localisation fusionnée pour obtenir l'emplacement actuel.

Je suis confronté à un problème très étrange, dans certains périphériques, je ne reçois pas l'emplacement actuel précis jusqu'à l'ouverture de Google Map, une fois que j'ai ouvert Google Map et retour à ma demande Cette application de temps renvoie l'emplacement exact. P>

Voici ma demande de localisation. P>

mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FATEST_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setSmallestDisplacement(DISPLACEMENT); // 10 meters


4 commentaires

Quelle est votre LocationRequest?


Allez que vous avez 33k points. Devrais-je deviner les valeurs concrètes? S'il vous plaît mettez-le dans la question non dans les commentaires. La haute précision était-elle activée dans les paramètres du téléphone? Combien de mises à jour de localisation avez-vous reçues? Quels appareils avez-vous testés? Quelle est la version de la bibliothèque GMS utilisée? Tout ce que vous pouvez penser aide.


Été un membre depuis 5 ans, affichez toujours un code dans les commentaires. Oh mec ...


Quels appareils avez-vous utilisés?


4 Réponses :


0
votes

Je ne suis pas sûr de cela, mais j'avais déjà vu quelque chose comme ça, ce téléphone n'avait pas eu de GPS dédié. Cela n'avait que A-GPS.

Après avoir joué pendant beaucoup de temps, j'ai réalisé que c'était la raison pour laquelle je ne recevais pas de lieu précise. Mais après avoir ouvert des cartes, une raison quelconque était exacte. Google fait définitivement beaucoup d'autres choses dans les cartes pour aller chercher un emplacement précis sur les cartes, même si le téléphone n'a pas de GPS dédié. Il suffit de vérifier les périphériques et leurs spécifications matérielles.


0 commentaires

0
votes

Lors de la création d'emplacementRequest, vous devez avoir la compréhority () sur priority_no_power.

priority_no_power signifie que votre application n'obtiendra jamais de l'emplacement, sauf si une autre application dans le téléphone ait demandé des emplacements et qu'il a reçu. En savoir plus sur emplacementRequest .


1 commentaires

Vous montrez comment le problème peut être fiable reproduit , pas comment il peut être corrigé.




3
votes

So Waze et nous avons utilisé une fausselocation dans le passé et avons été confrontés à beaucoup de problèmes. L'API est cassée. Certains appareils ne sont pas perfectionnés correctement. Reconnaissance de l'activité qui a fusionné un relais de lot ne fonctionnant pas et ne reconnaît pas le personnel correctement. Nous terminons, pour revenir à l'API de gestionnaire d'emplacement.

Ici le snippet:

init Manager et commencez à demander les mises à jour sur différents threads. Je regarde personnellement des auditeurs distincts pour chaque fournisseur xxx

et les auditeurs sont: xxx

pas oublié de désenregistrer et Arrêtez tous les filets :)


3 commentaires

Ai-je toujours besoin d'un fil séparé pour cet auditeur? Mon utilisateur marche relativement lentement et je n'ai pas besoin de mises à jour de haute fréquence; En outre, l'emplacement est simplement poussé pour un traitement ultérieur: rien ne sera coincé sur le fil de l'interface utilisateur.


Une autre question: il y a toute cette sagesse de la manière de filtrer les mises à jour "incorrectes".


1. Non. Vous n'avez pas besoin de fil séparé pour cela. Vous pouvez utiliser le même fil d'interface utilisateur pour obtenir onLocationChanger 2. C'est la toute une histoire différente :) Besoin d'écrire un livre pour filtrer les mauvais endroits