Getting an updated location in Android
        Posted  
        
            by jul
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by jul
        
        
        
        Published on 2010-06-16T18:11:34Z
        Indexed on 
            2010/06/16
            18:52 UTC
        
        
        Read the original article
        Hit count: 276
        
Hi,
I'm using the code shown below to get an updated value for location every time a button is clicked. When my activity is resumed I get an update every second, so that when I call getLastKnownLocation I expect to have a location that have been updated in the last second.
Is that the correct way to do that?
I would expect the onLocationChanged event to be triggered every time I execute a 'geo fix' command (or max after 1s since I request update every 1s), but it's only triggered the first time. Why?
Any help/suggestion welcome!
Thanks
package org.digitalfarm.atable;
...
public class Atable extends Activity {
    private Button mSearchButton;
    private TextView mytext;
    private LocationManager locationManager;    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);
        mSearchButton = (Button)this.findViewById(R.id.button);
        mytext = (TextView) findViewById(R.id.dude);
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        final Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);               
        mSearchButton.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
                  String provider = locationManager.getBestProvider(criteria, true);
                  Location location = locationManager.getLastKnownLocation(provider);             
          }
        });
    }
     //Start a location listener
    LocationListener onLocationChange=new LocationListener() {
        public void onLocationChanged(Location loc) {
            //sets and displays the lat/long when a location is provided
            String latlong = "Lat: " + loc.getLatitude() + " Long: " + loc.getLongitude();   
            mytext.setText(latlong);
        }
        public void onProviderDisabled(String provider) {
        // required for interface, not used
        }
        public void onProviderEnabled(String provider) {
        // required for interface, not used
        }
        public void onStatusChanged(String provider, int status,
        Bundle extras) {
        // required for interface, not used
        }
    };
    //pauses listener while app is inactive
    @Override
    public void onPause() {
        super.onPause();
        locationManager.removeUpdates(onLocationChange);
    }
    //reactivates listener when app is resumed
    @Override
    public void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,100.0f,onLocationChange);
    }
}
© Stack Overflow or respective owner