2011-04-04 3 views
0

Je travaille sur l'application, qui doit obtenir la latitude et la longitude. dans mon cas requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener) n'est pas en option. Pourquoi? parce que je dois obtenir l'emplacement juste quand l'utilisateur fait quelque chose que l'emplacement est nécessaire (disons qu'il frappe le bouton). et j'ai besoin de l'emplacement exactement sur l'heure, lorsque le bouton est touché. dans requestLocationUpdates, nous pouvons définir minTime - si je mets ceci disons sur 30000 l'emplacement au "bouton temps" ne sera pas aussi bon que je le veux. De la même manière, minDistance n'est pas aussi bon que je le veux. si je comprends la fonction requestLocationUpdates correcte - quand minTime et minDistance sont mis à 0, l'emplacement est mis à jour tout le temps. Corrigez-moi si j'ai tort, s'il-vous plait. L'application est pour l'entreprise que je travaille et cette application sera utilisée pendant la journée et la nuit. Donc, si l'application va vérifier les mises à jour de localisation tout le temps, la batterie serait souvent vide. C'est pourquoi j'ai besoin d'un emplacement juste à ce moment-là, ce bouton est touché. les utilisateurs n'ont pas accès à Internet et au GPS. donc je dois utiliser NETWORK_PROVIDERAndroid: comment mettre à jour emplacement unique et ne peut pas obtenir l'emplacement après le redémarrage

J'ai aussi des problèmes avec l'obtention de l'emplacement après le redémarrage du périphérique. ça ne marche pas jusqu'à ce que je cours google maps. les utilisateurs n'auront pas avalible cela non plus, alors quelle est la fonction google maps sur android utiliser pour obtenir l'emplacement après le redémarrage?

au moment i utiliser ce code:

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); 
     mlocManager.removeUpdates(mlocListener); 



public class MyLocationListener implements LocationListener{ 
    @Override 
    public void onLocationChanged(Location loc){ 
    latitude=loc.getLatitude(); 
    longitude=loc.getLongitude(); 
    Text = "My current location is: \n" + "Latitud = " + loc.getLatitude() + "\nLongitud = " + loc.getLongitude(); 
    Toast.makeText(getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public void onProviderDisabled(String provider){} 
    @Override 
    public void onProviderEnabled(String provider){} 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras){} 
} 
Code

est de here

mais ce code ne fonctionne pas correctement. si j'appuie sur le bouton "get location", le Toast s'affiche et l'emplacement est correct. mais si j'appuie sur le bouton plusieurs fois, ça ne fait rien. -mais après 5 minutes Toast est montré comme des centaines de fois ... pourquoi est-ce?

+0

J'ai testé et remarqué que l'appareil a besoin de 45s-90s pour se connecter au fournisseur de réseau et obtenir la latitude et la longitude. donc j'ai résolu la 2ème question ... –

Répondre

0

Vous appelez immédiatement removeUpdates après le requestLocationUpdates. Donc, l'auditeur n'est jamais enregistré. Appelez removeUpdates dans la méthode onLocationChanged.

Questions connexes