Android localisation GPS question de l'exactitude des
Je suis en train de travailler sur le gps de suivi des apps android. Voici mon code architecture:
- BackgroundSyncService : Un service de classe qui est utilisée pour obtenir l'emplacement de mise à jour. Ici GoogleApiClient est initialisé et met en œuvre d'autres Emplacement méthodes connexes.
- AppRunCheckerReceiver : Un BroadcastReceiver classe qui va vérifier si mon
BackgroundSyncService
est en cours d'exécution ou non dans un intervalle de temps. Si il a cessé ensuite de démarrer. - GpsEnableReceiver : Un BroadcastReceiver il se déclenche si le gps a changé. Il va vérifier si mon
BackgroundSyncService
est en cours d'exécution ou non dans un intervalle de temps. Si il a cessé ensuite de démarrer. - InternetConnectionStateReceiver : Un BroadcastReceiver il se déclenche lors de l'accès à l'internet a changé. Il va vérifier si mon
BackgroundSyncService
est en cours d'exécution ou non dans un intervalle de temps. S'il est arrêté, puis de démarrer.
Dans mon BackgroundSyncService
service j'initialise le GoogleApiClient à l'aide de cette façon:
public void setLocationLocationRequest() {
try {
googleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).addApi(com.google.android.gms.location.LocationServices.API).build();
locationRequest = new LocationRequest();
locationRequest.setInterval(3000);
locationRequest.setFastestInterval(3000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
googleApiClient.connect();
} catch (Exception e) {
}
Ici accuricy est LocationRequest.PRIORITY_HIGH_ACCURACY
et l'intervalle est
locationRequest.setInterval(3000)
ici est le GoogleApiClient la mise en œuvre du code.
Cette application GPS info section contient des de Latitude, la longitude et la Précision du paramètre
Mes Conclusions: dans onLocationChanged(Location location)
méthode que j'ai vérifier l'exactitude de l'Emplacement de l'objet dans cette façon : location.getAccuracy()
. Ici, si la précision est inférieure à 50 mètres, puis-je l'accepter.
Dans 85% des cas, il fonctionne comme un charme. Il m'envoyant emplacement exact de GPS. Mais dans 15% des cas, il m'envoie inexactes, comme plus >300 mètres.
Les 15% de l'appareil sont à faible coût Chine marque mobile.
Mes Questions:
- Comment puis-je faire un niveau de précision à près de 99%. Est-il un problème sur mon code architecture?
- Ne la précision du GPS dépend de la configuration de l'appareil? si OUI, alors ce que je peux faire pour le bas de configuration de l'appareil?
- Comment Uber, Allez-JEK etc. le covoiturage apps fonctionne pour tous les appareils? C'est qu'ils ont codage supplémentaire pour GPS?
- Ma demande est pour le Bangladesh. Ici, internet est lente. Est-il a eu un impact sur la précision du GPS?
Merci d'avance pour ce thread. Et aussi désolé pour le mauvais anglais.
- Avez-vous essayé avec
FusedLocationProviderAPI
? - merci @Piyush , je l'ai utilisé, mais aucune amélioration .
- Quand vous dites qu'il fonctionne OK pour 85% des cas, - entendez-vous que 85% des emplacements que vous obtenez, ou 85% des appareils? Concernant q. 4 - la vitesse d'internet n'a rien à voir avec le GPS. Il s'agit de deux systèmes différents.
- Votre question est bonne mais je doute un développeur rewheel tout le dur travail qu'ils ont fait pour obtenir cette chose pour faire de votre app puis, bien sûr, il n'y a pas de concurrence .Oui la précision du gps a une relation avec dispositif de vérification de la section mise en Réseau sur un périphérique spec, pouvez obtenir une idée de ce que assis les systèmes qu'ils utilisent pour obtenir le GPS.La vitesse de l'Internet n'a rien à voir avec un GPS, vous pouvez même désactiver internet et le travail.C'est le thread principal de lire tous et il vous aidera à coup sûr stackoverflow.com/questions/3145089/...
- Ils n'ont rien de spécial, juste developer.android.com/training/location/retrieve-current.html
Vous devez vous connecter pour publier un commentaire.
Emplacement des Mises à jour peut être effectuée dans l'une des manières suivantes:
Endroit que vous obtenez à partir de GPS est plus précis que l'endroit que vous obtenez à partir du réseau,donc si vous avez besoin de précision l'utilisation du GPS
Pas sûr de cela, mais je pense que sur le contexte de ce type d'emplacement que vous voulez comme vous voulez l'exactitude ou la plus rapide selon que choisir votre fournisseur de
FusedLocation fournisseur est la plus efficace et la solution efficace pour l'obtention de la localisation sur android maintenant,il rassemble l'emplacement des données provenant de différentes sources et selon les paramètres passés comme dans combien de temps vous voulez l'emplacement pour être à jour,vous voulez une grande précision ou pas etc.Il vous offre le meilleur emplacement.
Oui, vous devriez utiliser le FusedLocationProvider pour l'obtention de la localisation sur android,que google recommande également et cela la plus efficace et efficiente pour recevoir de localisation sur android pour l'instant.
Pourquoi n'essayez-vous pas par la création de
Critères.ACCURACY_HIGH
Android tente de masquer la réalité de la matériel de de nous, mais dans la pratique, il y a seulement deux fournisseurs d'emplacement: le GPS et réseau. Localisation GPS est lent et pas sur tous les appareils, mais il est précis. Emplacement réseau est plus rapide et est soutenu par presque tous les appareils, mais il est moins précis.
Google a amélioré sa carte et la gestion de l'emplacement avec fondue fournisseur d'emplacement.
Le principal point d'entrée pour l'interaction avec la fondue fournisseur d'emplacement.Les méthodes doivent être utilisées en conjonction avec un GoogleApiClient.
Code:
Autres Options:
getLastKnownLocation()
La
getLastKnownLocation()
renvoie le dernier emplacement connu...après avoir ré-installer l'application, il n'aura pas le dernier emplacement connu...donc il en résultera des NPE...au lieu d'utiliser de code ci-dessousVérifier quelques-uns des Meilleurs exemples que j'ai trouvé:
http://rdcworld-android.blogspot.in/2012/01/get-current-location-coordinates-city.html
https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi
https://developer.android.com/reference/android/location/LocationManager.html
https://demonuts.com/current-gps-location/
https://developer.android.com/training/location/retrieve-current.html
Il a travaillé pour moi...devrait fonctionner pour vous aussi...
if()
puiselse if()
Il va vérifier si la condition & trouvé vrai, alors il entrera en sorte qu'il ne sera jamais appelelse if()
Bien que les OP ont vérifié & upvoted /a accepté cette logique. Je repose mon cas ici, merci !!!!if(!isGPSEnabled && !isNetworkEnabled) {} else { if (isNetworkEnabled) { } if (isGpsEnabled) { } }
C'est le scénario de la vie réelle. Vous ne pouvez pas garantir que tous les fournisseurs d'emplacement fonctionnera comme prévu. Vous devriez demander des places disponibles.
OUI. Certains appareils peuvent avoir plus âgés GPS chipsets qui ne peuvent suivre les signaux GPS (USA) puisqu'il existe d'autres systèmes de positionnement comme Galileo (Europe), GLONASS (Russie), QZSS (Japon) et Beidou (Chine). Plus le support de puce pour ces types le plus de chances que vous ayez à suivre plus de satellite par la présente position fixe. Aussi TTFF (time to first fix) dépend du nombre de canaux du récepteur gps.
Puisque c'est un problème matériel, vous ne pouvez rien faire ici. Mais d'autres sources de localisation permettent de compenser le manque de données GPS tels que a-GPS (gps par), le wifi et le positionnement cellulaire. Il y a aussi quelques options payantes qui fournit une base de données pour localiser votre appareil à l'aide de points d'accès wifi et cellids (ils prétendent qu'ils fournissent la meilleure solution sur le wifi, mais je ne suis pas sûr que je ne l'utiliser. vous pouvez le vérifier http://combain.com). Wifi et cellid dépend aussi de combien de point d'accès wifi et de la cellule de la tour de disponible autour et dans quelle mesure ils le sont (force du signal). Si vous avez besoin de 50m de précision, de positionnement cellulaire a rien à faire, mais le wifi a une chance de se rapprocher de cette valeur.
Certains résultats de l'étude de 2009 [3]
Ils ont mis en place des stratégies de Localisation, mais il sera basé sur l'utilisation d'autres sources au cours de l'panne GPS.
D'autres réponses prétend qu'internet n'est pas lié au GPS. Oui c'est vrai, il n'est pas lié au GPS, mais l'emplacement. AGPS utilise internet pour chercher de l'3 types de données (signaux de Satellite, un almanach et des éphémérides) qui aident le GPS pour fournir une position fixe plus vite. Si l'éphéméride et almanach sont obsolètes ou l'appareil est déplacé de plusieurs centaines de km à partir de la position précédente correction puis il est appelé démarrage à froid et dure environ 12-15min sans AGPS.
Fusionné fournisseur d'emplacement sait déjà comment fournir la meilleure solution avec ces configurations, vous devez donc vous bénisse.
Références:
https://communityhealthmaps.nlm.nih.gov/2014/07/07/how-accurate-is-the-gps-on-my-smart-phone-part-2/
+1 pour la description en question.
J'espère que nous allons trouver la meilleure réponse pour votre question et de mieux au fil du temps, de ce que je sais..il ne sera pas seulement une bonne réponse ici.
Première(et deuxième)
Comment puis-je faire un niveau de précision à près de 99%. Est-il un problème sur mon code architecture?
Ne la précision du GPS dépend de la configuration de l'appareil? si OUI, alors ce que je peux faire pour le bas de configuration de l'appareil?
Deux - configuration de l'appareil et de l'architecture du code, sont importants ici. Si vous êtes déjà à 85% de taux de réussite, l'architecture du code est correct je pense.
Aussi loin que le GPS va, ligne-de-vue est un facteur important quand il s'agit de la configuration de l'équipement et de l'exactitude.
Bien que d'un faible coût d'mobile pourrait retourner une localisation précise avec une claire ligne de vue. Vous pouvez essayer d'exécuter 2 cycles plus/en attente pour atteindre une plus grande précision.
Dans le pire des cas et pour ce que sa vaut le coup, vous pouvez aussi essayer de le récupérer à l'aide de la LocationManager et GPS fournisseur de technique qui fonctionne comme un repli de 15% juste pour comparer et vous assurer que vous utilisez la localisation la plus précise vous pouvez obtenir.
Stratégies De Localisation mettre comme
Comment Uber, Allez-JEK etc. le covoiturage apps fonctionne pour tous les appareils? C'est qu'ils ont codage supplémentaire pour GPS?
Ils font un travail mais pas toujours avec la plus grande précision pour les emplacements reçu au sein de l'application. Si il y a tout lieu de hacks pour nous, les développeurs, nous avons besoin de trouver, peut-être un 5ème page de résultat de recherche de google 🙂 ou bénéficier de l'open source de l'environnement. Pour moi, les meilleures pratiques et android pensions de liens suffire. Vous avez déjà suivi les messages comme Emplacement de réception des mises à jour
Ma demande est pour le Bangladesh. Ici, internet est lente. Est-il a eu un impact sur la précision du GPS?
Aucun rapport entre internet et LocationManager + GPS_PROVIDER