IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

[Localisation GPS] Problème d'acquisition et de rapidité


Sujet :

API standards et tierces Android

  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut [Localisation GPS] Problème d'acquisition et de rapidité
    Bonsoir à tous,

    Je suis actuellement en train de me faire une petit application de géolocalisation.

    Voici mes contraintes :
    - l'acquisition ne doit pas se faire en mouvement, il faut être immobile
    - besoin d'une bonne précision
    - rapidité de l'acquisition

    Je réalise mes tests sur mon N1 sous 2.2.1 et d'autres mobiles tel qu'un Samsung Galaxy ainsi qu'un HTC Magic.

    1. Problème d'acquisition

      Il m'arrive régulièrement lors de mes tests, de lancer l'acquisition mais de ne recevoir aucune position. Voici comment je lance mon acquisition GPS :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
       
      this.lManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
      this.lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
      C'est par rapport aux contraites définies que je définis les intervalles de temps et de distances à 0.

      Est-ce pas trop petit comme valeurs ? ayant tester plusieurs valeurs je n'ai jamais réussi à avoir des résultats satisfaissant.
    2. Problème de rapidité

      Lorsque j'arrive à acquérir une position il me faut au minimum entre 30sec (c'est quand le cache qui répond je pense) et plusieurs minutes. C'est comme si le satellite ne me répond pas ou que mes requêtes ne partent pas. Pourtant j'ai bien le GPS qui travaille.



    Existe-t-il des moyens optimiser ce temps d'acquisition et d'assurer la récupération de sa position à chaque coup ?

    J'ai tenté les solutions suivantes :
    • Acquisition NETWORK puis GPS :
      Cette solution me permet d'avoir une réponse rapide mais complètement fausse à 500m près car le NETWORK me répond alors que le GPS je peux toujours attendre.
    • Acquisition NETWORK et GPS en même temps :
      Résultat identique à la solution précédente


    J'ai regardé la doc Android et j'ai trouvé ce schéma, mais cela m'aide pas des masses.

    Comment fait Google pour avoir une position GPS précise et rapide lorsque l'on lance l'application Google Maps ?

    Merci d'avance pour l'aide,

    Mamatt.

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    C'est par rapport aux contraites définies que je définis les intervalles de temps et de distances à 0.
    Est-ce pas trop petit comme valeurs ? ayant tester plusieurs valeurs je n'ai jamais réussi à avoir des résultats satisfaissant.
    Le 0 du mindistance défini la distance minimum entre deux points auquel le locationManager te remontera la localisation .

    Donc dans ton cas il remonte toutes les positions .

    Si tu veux des valeurs immobiles soit tu regarde que la distance entre deux points et proche de zéro , soit tu regarde la vitesse (si elle existe) de ton point si la vitesse est nulle alors tu peux supposer que la personne est immobile .

  3. #3
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut
    Je comprend ce que tu veux dire, mais cela nécessite que je puisse récupérer plusieurs positions rapidement, ce qui n'est pas le cas ou alors c'est plutôt rare.

    De plus si je récupère 2 positions et que je fais la différence entre les 2 et que la différence s'approche de 0 l'information que j'en récupère c'est uniquement que la personne n'a pas bougé. Dans mon cas, la personne sera toujours immobile lors de l'acquisition. Et ça ne va pas me servir de savoir ça dans mon cas.


    Comment fais Google avec son appli Google Map pour être aussi précis et rapide ?

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Je pensais qu'il fallait que tu testes si l'utilisateur était bien immobile.

    Maintenant je n'arrive pas à comprendre, si ta contrainte est que l'utilisateur doit être immobile , pourquoi alors créés-tu un Listener .

    Tu peux récupérer directement la dernière position connue ^^.

    http://developer.android.com/referen...lang.String%29

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut
    Bonjour Feanorin,

    Je suis obligé de créer un listener afin de récupérer ma position actuelle.

    La méthode getLastKnownLocation ne correspond pas à mes attentes, car elle retourne la dernière position récupérée pour le provider que je lui passe en paramètre. Sachant que l'utilisateur n'a pas le gps constamment activé, il est donc impossible de récupérer une position correspondant à sa position actuelle.

    Cas simple d'utilisation :
    J'utilise mon gps à Paris au pied de la Tour Eiffel avec Google Maps ou autre, je l’éteins une fois l'utilisation terminée, le provider enregistre dernière la position (Paris - Tour Eiffel). Jusque là tout va bien.

    Maintenant j'ai changé de ville je suis à la gare de Nantes je souhaite récupérer ma position actuelle, donc je lance mon appli j'active mon GPS et fais un getLastKnowPosition, et ce que cette méthode me retournera ca sera la position que j'avais lors de ma dernière utilisation du provider c'est à dire paris aux pieds de la Tour Eiffel donc pas ma position actuelle. C'est pour cela que je n'utilise pas cette méthode, car l'elle m'assure pas d'avoir le position actuelle de l'utilisateur.

    Après peut être que récupérer la dernière position et faire une acquisition gps par la suite peu accélérer l'acquisition, je n'ai pas testé.

    Je recentre un peu mes questions.

    1. Comment récupérer rapidement ma position actuelle à chaque coup et rapidement ?
      - en utilisant le NETWORK_PROVIDER ok mais je n'ai pas de position précise.
    2. Comment la récupérer rapidement et avoir une position précise ?
      - En mixant la récupération par NETWORK afin de récupérer rapidement ma position puis par GPS afin d'affiner ma position ? ok mais comment je fais ? car quand j'utilise le GPS je n'arrive pas à être notifié rapidement afin de récupérer une position.
      - En lancant la récupération par NETWORK et GPS en même temps ? déjà testé et ca ne m'apporte rien.


    Comment fait Google pour récupérer aussi rapidement la position actuelle d'un user ? est-ce qu'ils ont des privilèges au niveau des satellites qui leurs permettent de récupérer rapidement une position ? ou est-ce qu'il y a une astuce de code à avoir ?

    Merci d'avance pour vos idées ou vos réponses,

    Matthieu.

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Après peut être que récupérer la dernière position et faire une acquisition gps par la suite peu accélérer l'acquisition, je n'ai pas testé.
    Je pensais à cette solution .


    Comment fait Google pour récupérer aussi rapidement la position actuelle d'un user ? est-ce qu'ils ont des privilèges au niveau des satellites qui leurs permettent de récupérer rapidement une position ? ou est-ce qu'il y a une astuce de code à avoir ?
    Personnellement , je ne sais pas . Mais je pense que la solution que nous avons discutée un peu plus haut doit y ressembler.

  7. #7
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut
    Merci Feanorin, je vais tester ça, je reviens vers toi pour te faire part du résultat ce soir.

  8. #8
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut
    Bon ca change pas grand chose. Autant vers une acquisition NETWORK qui sera plus rapide et s'approchera plus de ma position actuelle que de récupérer la dernière position enregistré par le provider.

    Je comprend vraiment pas pourquoi, cependant, j'ai remarque de Google Map fait à mon avis, la requête network en premier et lance en même temps.

    Peut-être que je me prend la tête sur un problème que je ne peux pas résoudre ...

  9. #9
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Oui, normalement tu procèdes comme ceci :
    1 - tu récupère la dernière position connue, et tu traites
    2 - tu lances une récupération de la position via le réseau
    3 - tu lances une récupération de la position via le GPS
    4 - A la réception de la position via le réseau, tu affiches et donne un rayon d'approximation assez grand
    5 - A la réception de la position via le GPS, tu affiches et donne un rayon d'approximation plus restreint.

    Google n'a pas de passe droit pour la récupération des "fix" GPS plus rapidement.

  10. #10
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut
    Tout d'abord merci,

    Je vois ce que tu veux dire, mais j'ai quelques questions :
    • Je lance l'acquisition NETWORK et GPS simultanément ?
    • Dois-je utilise le même listener pour chacune des acquisitions ?


    Car j'ai déjà testé cette solution mais en utilise un seul listener. Est-ce que ça pourrait créer des conflits ? je pense pas.

    Cette solution est en gros, une solution intermédiaire, qui me permet d'avoir une position rapidement à traiter pendant que je récupère la position précises par gps. C'est un bon compromis du coup même si c'est pas ce que je rêverai pour mon application ...

    Je vais tester ça ce soir. Je reviens vers toi après. Merci.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2008
    Messages : 103
    Par défaut
    Bonsoir,

    As tu trouvé une solution à ton problème ?

    Je suis dans le même situation : Je cherche à récupérer une position via le NETWORK_PROVIDER parce que plus rapide et dans la foulée je cherche à récupérer une position via GPS_PROVIDER parce que plus précis... Mais les pb du GPS sont le temps d'acquisition et de réception qui sont aléatoires !

Discussions similaires

  1. [Localisation GPS - ANDROID 2.2] Acquisition et rapidité
    Par ikeabp dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/04/2011, 20h26
  2. [LabView 8.0] Problème d'acquisition miraculeuse
    Par joebar511 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 28/05/2008, 11h49
  3. VB6 Problème d'acquisition sur 2 Webcams identiques
    Par pmboutteau dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 19/04/2007, 09h51
  4. [ZOPE] Problème d'acquisition
    Par HexChit dans le forum Zope
    Réponses: 4
    Dernier message: 18/07/2006, 17h05
  5. Probléme d'acquisition d'image.
    Par astragoth dans le forum C++
    Réponses: 3
    Dernier message: 05/03/2006, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo