I'm using Google APIs and the MapActivity, MapView etc..
When I need to get my current location I use this code the FIRST TIME :
myLocationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
// Sets the criteria for a fine and low power provider
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
crit.setPowerRequirement(Criteria.POWER_LOW);
// Gets the best matched provider, and only if it's on
String provider = myLocationManager.getBestProvider(crit, true);
// If there are no location providers available
if (provider == null){
OnClickListener listener = new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Closes the activity
finish();
}
};
Utils.getInstance().showAlertDialog(this, R.string.warning_dialog_title,
R.string.no_location_providers_error_message,
android.R.drawable.ic_dialog_alert, false, listener);
}
// Location services is enabled
else{
myLocationListener = new MyLocationListener();
myLocationManager.requestLocationUpdates(
provider,
0,
0,
myLocationListener);
// TODO - put a marker in my location
GeoPoint currentGeoPoint = MapUtils.getInstance().
getCurrentLocation(myLocationManager, provider);
// Center to the current location
centerLocation(currentGeoPoint, MAX_ZOOM);
}
I also have a "back to current location button" - for when the user moves the map around and wants to quickly return to his current location.
My question is,
should I use the getBestProvider()
method each time I want to get location information?
I could save the last choosen provider, but the conditions could change every second:
What is the right approach?
Like been told on the coments, this is the answer: http://developer.android.com/guide/topics/location/strategies.html#BestEstimate