2011-03-17 2 views
0

Je travaille sur une application qui envoie par courriel l'emplacement GPS d'un téléphone à l'utilisateur - et il est très important que le téléphone envoie l'emplacement actuel, pas le emplacement depuis un moment.Android GPS ne pas mettre à jour malgré minTime de 0 et minDistance de 0

J'ai essayé quelques correctifs, tels que changer minTime et minDist, ainsi que supprimer (ou ne pas supprimer) l'auditeur lorsque vous avez terminé. Cette application ne doit être utilisée qu'à certains moments, cependant, et je veux une utilisation minimale de la batterie, donc le laisser fonctionner n'est pas une bonne option.

J'ai eu la chance avec une mise à jour si je mets le mintime à une petite quantité, et n'a jamais enlevé le LocationListener, auquel cas le deuxième message envoyé serait mis à jour, mais à part ça ...

Cela me fait penser que je dois lui donner plus de temps pour obtenir la localisation GPS, mais comment l'obligerais-je à le faire?

Dans cet esprit, j'ai essayé cet extrait:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener locationListener = new LocationListener() { 
     @Override 
     public void onStatusChanged(String provider, int status, 
       Bundle extras) { 
      // TODO Auto-generated method stub 
     } 
     @Override 
     public void onProviderEnabled(String provider) { 
      // TODO Auto-generated method stub 
     } 
     @Override 
     public void onProviderDisabled(String provider) { 
      // TODO Auto-generated method stub 
     } 
     @Override 
     public void onLocationChanged(Location location) { 
      // TODO Auto-generated method stub 
     } 
    };  
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, (long)(.000001), (float)(0), 
      locationListener);  
    String s = ""; 
    SimpleDateFormat timingFormat = new SimpleDateFormat("hh:mm"); 
    timingFormat.format(new Date()); 
    s += "The current time according to the clock is: " 
      + timingFormat.format(new Date()) + "\n"; 
    Location location = lm 
      .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    lm.removeUpdates(locationListener); 

(retourne la chaîne s, avec l'adresse ajoutée)

Répondre

0

Vous devriez mettre quelque chose en onLocationChanged faire Quelque chose avec les mises à jour de l'emplacement entrant.

Normalement, vous obtenez d'abord une approximation approximative, et lorsque le GPS accorde la précision y va mieux. Pour gérer cela efficacement, faites onLocationChanged vérifier si l'emplacement est suffisamment précis, et laissez-le démarrer ce que vous voulez faire avec l'emplacement précis.

Un bon début serait de mettre juste

Log.v("myapp","Location changed: "+location); 

dans onLocationChanged() puis regarder la sortie.

Questions connexes