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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. Comment puis-je faire un niveau de précision à près de 99%. Est-il un problème sur mon code architecture?
  2. 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?
  3. Comment Uber, Allez-JEK etc. le covoiturage apps fonctionne pour tous les appareils? C'est qu'ils ont codage supplémentaire pour GPS?
  4. 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