2011-03-21 6 views
3

J'utilise ce code pour obtenir ma position et imprimer les coordonnées sur l'écran. aider à utiliser les coordonnées GPS, Android

package com.example.alpha; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.Toast; 

public class alpha extends Activity 
{ 
    private LocationManager lm; 
    private LocationListener locationListener; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //---use the LocationManager class to obtain GPS locations--- 
     lm = (LocationManager) 
      getSystemService(Context.LOCATION_SERVICE);  

     locationListener = new MyLocationListener(); 

     lm.requestLocationUpdates(
      LocationManager.GPS_PROVIDER, 
      0, 
      0, 
      locationListener); 
    } 

    public class MyLocationListener implements LocationListener 
    { 
     public void onLocationChanged(Location loc) { 


      double lat = loc.getLatitude(); 
      double lon = loc.getLongitude(); 
      Toast.makeText(getBaseContext(), "Location changed : alphaLat: " + lat + 
        " alphaLng: " + lon, 
        Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, 
      Bundle extras) { 
      // TODO Auto-generated method stub 
     } 

    }   

} 

Le problème est que je veux utiliser les valeurs lat et lon, afin de les envoyer par un ruisseau. Des conseils sur la façon d'obtenir les coordonnées en dehors de la méthode onLocationChanged? Au lieu de déclarer lat et lon en tant que variables locales, déclarez-les comme variables de niveau classe au lieu de déclarer lat et lon comme variables locales.

Répondre

2

De cette façon, vous pouvez accéder à ces valeurs en dehors de la méthode onLocationChanged.

public class alpha extends Activity 
{ 
     private LocationManager lm; 
     private LocationListener locationListener; 
     double lat; 
     double lon; 

    public class MyLocationListener implements LocationListener 
    { 
    ... 

    lat = loc.getLatitude(); 
    lon = loc.getLongitude(); 

    ........ 
+0

bien ne prendraient-ils pas toujours leur valeur à l'intérieur de la méthode et la valeur ne passerait pas à l'extérieur? – kotsosh

+0

@kotsosh n'a pas compris votre question. Si vous souhaitez accéder à la variable en dehors de la classe, envisagez d'utiliser sharedpreferences ou un objet singleton. J'ai utilisé l'objet singleton pour transmettre des valeurs entre mon service et mon activité. – GSree

Questions connexes