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

Android Discussion :

Location de sa position


Sujet :

Android

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Location de sa position
    Bonjour,

    Pourriez-vous SVP tester ce code pour moi?
    Dans le OnCreate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // -------------------
    // Initialisation Localisation 
    // -------------------
    LocationManager mlocManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, onLocationChange);
    Location lastloc = mlocManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    latitude = lastloc.getLatitude();
    longitude = lastloc.getLongitude();
    Log.e("TEST", "Location initale: " + longitude + "/" + latitude);
    Dans la classe principale:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /****************************
    * Mise à jour position *
    ***************************/
    LocationListener onLocationChange = new LocationListener() {
       @Override
       public void onLocationChanged(Location loc) {
    	latitude = loc.getLatitude();
    	longitude = loc.getLongitude();
    	Log.e("TEST", "Changement de location: " + longitude + "/" + latitude);
       } 	
     
       @Override
       public void onProviderDisabled(String provider) {}
       @Override
       public void onProviderEnabled(String provider) {}
       @Override
       public void onStatusChanged(String provider, int status, Bundle extras) {}
     
    };
    Dans le manifest j'ai une permission ACCESS_FINE_LOCATION et INTERNET.

    Parce que ce code m'affiche bien ma dernière position, mais ne se met jamais à jour (aucun Log de Changement de location), du moins sur mon téléphone...

    Ça vous fait pareil?

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Points : 118
    Points
    118
    Par défaut
    De mon côté, ça ne change pas non plus (contrairement au GPS_PROVIDER).
    Je pense que c'est normal, en WI-FI, la borne reste au même endroit (ou alors, le téléphone garde en mémoire la position et ne la change pas).

    J'en profite pour une petite question, est-ce qu'il est possible de demander la position sur les deux providers (afin d'avoir une position selon le choix de l'utilisateur dans les paramètres du téléphone) ?

    EDIT : je pense que cette ligne va me servir
    Settings.System.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Oui oui c'est possible, je l'ai déjà vu quelque part...
    Là par exemple: http://stackoverflow.com/questions/5...d-gps-provider mais il y a peut être plus précis.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    ACCESS_FINE_LOCATION permet de récupérer la position du GPS. Or Tu demande à ton LocationListener d'écouter les changements du NETWORK_PROVIDER. Or il n'a pas le droit car tu as permis d'écouter seulement les position GPS

    Soit tu positionnes ton Listener sur GPS_PROVIDER ou il faut modifier ton manifest avec la permission ACCESS_COARSE_LOCATION pour pouvoir écouter la position suivant les réseaux.

    J'ai pas testé mais je crois que ton problème viens de là.




    Pour répondre à gilloddon, je crois qu'un listener ne peux écouter qu'un seul provider car chaque provider pourrai donner 2 coordonnées différentes en même temps

    Par contre tu peux construire ton listener pour qu'il prenne le provider qui est dispo ou le plus adapté à tes besoins en utilisant la méthode LocationManager.getBestProvider.

    De plus il existe un Broadcast action pour être prévenu quand la config des Provider change (par exemple quand l'utilisateur éteint le GPS, ce boulet ) : Location.PROVIDERS_CHANGED_ACTION.

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Mais d'après la doc j'ai compris que ACCESS_FINE_LOCATION comprenait et NETWORK et GPS, tandis que ACCESS_COARSE_LOCATION comprend seulement le NETWORK, non?

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    Effectivemnt, tu as raison NETWORK_PROVIDER a besoin de COARSE ou FINE au chox.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    en créant 2 location manager ( GPS + Network ) , tu pourrais avoir 2 listeneurs et 2 écouteurs .
    Donc 2 position en temps reel .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, onLocationChangeGSM);
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, onLocationChangeGPS);
    en GSM , la précision est très bof ... l'opérateur te renvoi une position quand bon lui semble !
    cela va de quelques secondes à plusieurs minutes .

    @ suivre ...

  8. #8
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    en créant 2 location manager ( GPS + Network ) , tu pourrais avoir 2 listeneurs et 2 écouteurs .
    Il me semble que quand le téléphone a ces deux écouteurs actifs en même temps ne fait pas consommer plus de batterie au téléphone.
    Donc ce n'est peut être pas une bonne idée..
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] ScrollBar position Location Controls
    Par Hurin dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2008, 09h50
  2. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42
  3. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09
  4. Réponses: 2
    Dernier message: 17/05/2002, 20h37
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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