Согласно моему пониманию доступа к местоположению на Android:
- Провайдеру местоположения требуется разрешение ACCESS_COARSE_LOCATION, он имеет меньшую точность, но быстрее находит местоположение.
- Провайдеру GPS требуется разрешение ACCESS_FINE_LOCATION, он имеет более высокую точность и медленнее определяет местоположение.
Так что поймите лучше, я запустил следующий код
//Go through a list of all location providers to get the "best" one
List<String> locationProviders = locationManager.getAllProviders();
for (String locationProviderInit : locationProviders) {
Log.d(DEBUG_TAG, "found locationProvider:" + locationProviderInit);
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProviderInit);
if (lastKnownLocation != null) {
Log.d(DEBUG_TAG, "accuracy: " + lastKnownLocation.getAccuracy());
Log.d(DEBUG_TAG, "time: " + lastKnownLocation.getTime());
}
}
В то время как поставщик определения местоположения сети постоянно дает точность 60,0, поставщик определения местоположения GPS обычно дает точность ниже и время выше.
Не уверен, почему это происходит.