7

Il peut y avoir des questions similaires concernant ce sujet, mais j'ai besoin de vos pensées et suggestions sur certaines exigences spécifiques.Récupère des points de localisation intermédiaires précis en arrière-plan et calcule la distance des lieux de départ et de fin dans Android

Voici mon besoin - Nous développons une application qui suit le voyage de l'utilisateur. L'application commencera à collecter l'emplacement de cet utilisateur en arrière-plan. Lorsque l'utilisateur débute son voyage depuis App.Background Service, il récupérera des emplacements en fonction du mouvement de l'utilisateur dans une durée spécifique. Lorsque l'utilisateur 'arrête' son voyage de l'application, nous calculons la distance parcourue par l'utilisateur avec l'aide de tous les lieux enregistrés (Avec l'API de calcul de distance Google). L'application fonctionne bien dans le cas idéal. Mais le principal défi est - Dans certains scénarios, nous ne sommes pas en mesure d'aller chercher l'emplacement exact et précis de l'utilisateur. Scénarios affectant est - Pas d'internet, plan de données avec 2g/3g, certaines zones spécifiques où le GPS ne renvoie pas de données précises, etc.

Des données incorrectes de lat-long provoque une distance et une route incorrectes. Quel est le principal problème avec l'application .

S'il vous plaît, n'importe qui peut suggérer la meilleure alternative/suggestion pour cela? P.S. - Nous avons essayé GPS, Réseau, FusedLocationProvider.

EDIT 2 -

Nous avons mis en œuvre la logique sur la base de la précision et distances.Got plus près des points. Et juste rencontré une api utile de Google qui corrige certains points de localisation qui sont distraits des routes réelles. Affichage pour référence des autres ...

Snap to Roads Api from Google

Répondre

1

Essayez de mélanger GPS et Accéléromètre

Si vous constatez que le GPS a cessé de fonctionner, allumez l'accéléromètre. Si le GPS est à nouveau allumé, calculez de nouveau la distance avec. De cette façon, vous pouvez avoir un itinéraire avec des pièces GPS et des accéléromètres. Les plus grandes parties GPS, les données plus précises seront

+0

Pouvez-vous s'il vous plaît fournir un extrait de code? Exemple pour le même? –

+0

https://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors-motion-stepcounter Il existe un code sur les étapes de comptage ou vous pouvez écouter les étapes. https://stackoverflow.com/questions/6368286/detection-gps-on-off-switch-in-android-phones Ici, vous pouvez détecter si le GPS est désactivé. Lorsque le GPS est désactivé, commencez simplement à compter les étapes à l'aide de l'accéléromètre. Lorsque le GPS est de retour, arrêtez de compter les étapes avec acceletometer –

2

c'est un sujet compliqué.

Une considération que vous devez prendre. Android Oreo limite les services d'arrière-plan et que ce que vous voulez réaliser ne fonctionnera pas.

que je ferais est ce (et il est la recommandation de Goolge)

Quand quelqu'un commence le voyage (l'utilisateur est au courant), vous devez lancer une sur la notification d'aller avec un service de premier plan, n » t compter sur les services d'arrière-plan plus. Vérifiez la fonctionnalité "Démarrer l'activité" dans Google Fit App. Comme pour ne pas avoir de signal, ou de GPS précis, eh bien ... c'est un problème géographique !, il n'y a rien que vous puissiez faire. Ou, peut-être que vous pouvez, en utilisant le LocationProvider. FusedLocationProvider est fusionné dans chaque application qui demande des mises à jour d'emplacements.

Lisez ceci, et voyez si cela vous aide.

https://developer.android.com/guide/topics/location/strategies.html

+0

Les services de premier plan ne sont pas si appropriés dans l'exigence de mon application .. :(Et j'ai examiné le fonctionnement de Google fit.Besides Foreground service, je suis plus intéressé par les emplacements suivis par eux. peut-être utiliser des capteurs.Correct? –

+0

Regardez également ce https://github.com/googlesamples/android-play-location, vérifiez l'exemple "LocationUpdatesForegroundService", cela pourrait être une bonne façon de mettre en œuvre votre application, le service commence dans En arrière-plan, et quand l'application passe en arrière plan, le service se propulse au premier plan et ainsi de suite ... C'est très intéressant –

+0

Hé ... Nous avons fait des conditions et de la logique avec précision et distance pour se rapprocher des points de localisation. quand nous obtenons l'emplacement de l'autre côté de la route, la distance est reflétée. N'importe quelle idée pour obtenir le point exact sur la route seulement? Pendant l'itinéraire entier? –

1

How to get more accuracy by GPS_PROVIDER

En gros, si la précision d'un emplacement est pas jeter acceptable loin. Le prochain sera meilleur.

+0

J'ai déjà essayé cela. Mais le problème est que chaque appareil a un niveau de précision différent pour être considéré comme "MIEUX". Par exemple, si je compare avec une précision de 50 mètres, certains emplacements de périphériques ne sont pas enregistrés car leur niveau de précision est toujours au-delà de ce niveau. Certains périphériques ont une précision de 1500 à 2500 ... –

+0

Oui différent j'attends le 100 ou moins de venir sur la précision et de créer de belles lignes kml sur la carte. La précision du 2ème point est en mètres 1500 est 1,5 clics qui est l'emplacement de la tour de la cellule pas un GPS. – danny117

+0

Hey ... Nous avons fait des conditions et de la logique avec précision et distance pour se rapprocher des points de localisation.Maintenant, le seul problème est, quand nous obtenons l'emplacement de l'autre côté de la route, La distance est reflétée.Toute idée pour obtenir le point exact sur la route seulement ?? Pendant toute la route ?? –