Может случиться так, что если у пользователя включен GPS, ваша линия
provider = locationManager.getBestProvider(criteria, false);
уже возвращает LocationManager.GPS_PROVIDER
, поэтому вы просто запрашиваете getLastKnownLocation(provider)
дважды с одним и тем же провайдером. Попробуйте вместо этого:
Location networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location gpsLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
или, если вам действительно все равно, какой использовать
List<String> providers = locationManager.getProviders(false);
Location[] loc = new Location[providers.size];
int i = 0;
for (String provider: providers){
loc[i++] = locationManager.getLastKnownLocation(provider);
}
РЕДАКТИРОВАТЬ: из-за рефакторинга вопроса
//query provider from Location
public void onLocationChanged(Location loc){
String provider = loc.getProvider();
if (provider.equals(LocationManager.GPS_PROVIDER)){
//GPS Location
} else if (provider.equals(LocationManager.NETWORK_PROVIDER)){
//Network Location
}
....
}