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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    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 confirmé
    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
    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 éprouvé
    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
    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 éclairé
    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
    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 éprouvé
    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
    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 éclairé
    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
    Par défaut
    Effectivemnt, tu as raison NETWORK_PROVIDER a besoin de COARSE ou FINE au chox.

+ 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