2011-01-19 3 views
12

J'ai besoin d'obtenir l'emplacement actuel de l'utilisateur sur une application Android, donc j'ai lu quelques tutoriels et des échantillons sur le web, mais je vois que dans tous les exemples, l'emplacement est retrivé de un "onLocationChange" qui signifie que chaque fois que l'emplacement change, le code de "onLocationChange" est exécuté.Android - Obtenir l'emplacement seulement une fois

J'ai seulement besoin d'obtenir l'emplacement de l'utilisateur au moment où l'application est démarrée.

Merci pour votre aide!

Répondre

4

Vous pouvez le faire avec LocationManager. getLastKnownLocation

+0

merci pour votre réponse, à partir de votre lien semble que je dois toujours définir un fournisseur ... est-ce exact? ai-je pour obtenir le meilleur fournisseur et le définir dans getLastKnownLocation? –

+0

Oui, c'est ce que vous devez faire. – elevine

1

Mettre cela dans l'activité principale:


boolean bFirst = true; 
function void onCreate(blabla) { 
    if(bFirst) { 
    //Do your stuff to get the location 
    bFirst = false; 
    } 
} 

Mettre le même dans le onResume();

+0

cela fait exécuter le code une seule fois, mais le test de condition est continuellement sondé –

10

Vous pouvez obtenir la dernière localisation en utilisant le code ci-dessous. Il fait reculer les fournisseurs de localisation et les boucles sur le tableau. i.e commence par le GPS, si aucun GPS n'obtient l'emplacement du réseau. Vous pouvez appeler cette méthode chaque fois que vous avez besoin d'obtenir l'emplacement.

private double[] getGPS() { 
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

/* Loop over the array backwards, and if you get an accurate location, then break     out the loop*/ 
Location l = null; 

for (int i=providers.size()-1; i>=0; i--) { 
l = lm.getLastKnownLocation(providers.get(i)); 
if (l != null) break; 
} 

double[] gps = new double[2]; 
if (l != null) { 
gps[0] = l.getLatitude(); 
gps[1] = l.getLongitude(); 
} 
return gps; 
} 
+1

Je reçois 0.0 pour lat et long, des idées pourquoi? – Maurice

+0

Testez-vous l'émulateur ou le périphérique actuel? – Phobos

+0

Non, en travaillant sur S3 et S2 –

0

Pour la méthode getGPS() qui Phobos proposé fonctionne correctement, vous devez autoriser l'accès au sein de votre AndroidManifest.xml

qui va se débarrasser de votre erreur de réception 0.0

Ajouter ces lignes:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.LOCATION_HARDWARE" /> 
Questions connexes