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 :

[Géolocaliastion]Gestion des mises à jour.


Sujet :

Android

  1. #1
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut [Géolocaliastion]Gestion des mises à jour.
    Bonjour,

    Je dois réaliser une application permettant de sauvegarder la localisation à un moment donnée. (Via à un top utilisateur)
    Cependant, j'ai quelque difficulté avec la gestion du LocationManager afin d'avoir des coordonnées viable au moment voulu.

    Actuellement, j'ai une classe singleton nommé LocationService appelé par chaque page ayant besoin de localisation (et l'initialise si besoin):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Singleton
    public class LocationService {
    	@Inject
    	private LocationManager locationManager;
    	// reste de la classe...
    }
    Il se trouve qu'à l'initialisation de ce singleton, je réalisé l’opération suivante :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    	public void init() {
    		LOG.debug();
    		try {
    			locationManager.removeUpdates(this.gpsListener);
    			locationManager.requestLocationUpdates(
    					LocationManager.GPS_PROVIDER,0,
    					0, this.gpsListener, context.getMainLooper());
    			locationManager.removeUpdates(this.networkListener);
    			locationManager.requestLocationUpdates(
    					LocationManager.NETWORK_PROVIDER, 0,
    					0, this.networkListener, context.getMainLooper());
    		} catch (Exception e) {
    			LOG.warning("problem with a provider", e);
    		}
    	}
     
     
    private abstract static class BaseLocationListener implements
    			LocationListener {
    		private Location last;
    		public Location getLast() {
    			return last;
    		}
    		public void setLast(Location last) {
    			this.last = last;
    		}
    		@Override
    		public void onStatusChanged(String provider, int status, Bundle extras) {
    		}
     
    		@Override
    		public void onProviderEnabled(String provider) {
    		}
     
    		@Override
    		public void onProviderDisabled(String provider) {
    		}
    	}
     
    	private final BaseLocationListener gpsListener = new BaseLocationListener() {
     
     
    		@Override
    		public void onLocationChanged(Location location) {
    			setLast(location);
    			LOG.info("Updated GPS Location", location);
    		}
     
    	};
     
    	private final BaseLocationListener networkListener = new BaseLocationListener() {
    		@Override
    		public void onLocationChanged(Location location) {
    			setLast(location);
    			LOG.info("Updated Network Location", location);
    		}
    	};
    Or il se trouve que je ne passe jamais dans les onLocationChanged. Je me demande donc si il y a une erreur dans ma gestion où si je n'ai simple pas de coordonnées disponible sur le téléphone malgré l'activation du GPS, du wifi et du réseau opérateur.

    A noté que dans le logcat connecté au mobile en question j'ai des traces de ce types :

    03-04 16:05:08.328: D/(1992): [HYPOS] NOMOVE Time 37385, PowerMode 2, GPSWeakSignal 44, GPSFixTime 0, IsPedestrian 0, DOE 0
    Que je ne sais pas décrypté et dont je ne connais pas l'origine exacte. Ce qui m'embête un peu.

    Si vous avez une idée sur la question, une remarque ou qu'il y a quelque chose que vous semble bizarre dans ce que je dis... Merci d'avance pour l'aide !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  2. #2
    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
    Salut,

    Enlève les removeUpdate et mets un temps par défault mais pas 0 plus style 1000 ms.

    SI tu veux juste avoir l'information a un instant t alors utilise la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     getLastKnownLocation(String provider)
    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.

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    J’utilise bien le getLastKnownLocation(String provider). Cependant, si personne ne demande d'update, celui-ci n'est jamais mise à jour... Et la question de la mise à jour est justement mon problème.

    D'après la littérature que j'ai lu sur le sujet, les valeurs "0", sont les valeurs à utiliser pour avoir le maximum d'update. Sachant que j'avais déjà fait des tester avec des valeur relativement petite (genre 5 sec et 60 sec), en obtenant le même résultat.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    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
    J’utilise bien le getLastKnownLocation(String provider). Cependant, si personne ne demande d'update, celui-ci n'est jamais mise à jour... Et la question de la mise à jour est justement mon problème.
    Yep c'est cela.

    D'après la littérature que j'ai lu sur le sujet, les valeurs "0", sont les valeurs à utiliser pour avoir le maximum d'update. Sachant que j'avais déjà fait des tester avec des valeur relativement petite (genre 5 sec et 60 sec), en obtenant le même résultat.
    C'est vrai mais tu vas consommer beaucoup de batterie pour le coup
    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.

  5. #5
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Tu as aussi essayé avec un filtre pour la distance plus grand ?
    Comme le suggère Feanorin, je mettrais un temps de 1000ms et une distance de 500m pour tester.
    Est ce que tu as bien le symbole du gps qui s'active dans le notification lorsque tu lances le locationManager ?
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

Discussions similaires

  1. Gestion des mises à jour
    Par Tiger-222 dans le forum Windows Vista
    Réponses: 2
    Dernier message: 06/03/2009, 19h36
  2. Gestion des mises à jour effectuées sur un client
    Par dr00w dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 03/11/2008, 00h05
  3. Réponses: 5
    Dernier message: 09/10/2007, 20h49
  4. Gestion des mises à jour de mes développements ..
    Par flagadda dans le forum Windows
    Réponses: 2
    Dernier message: 16/08/2006, 10h53

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