根据我对在 Android 上访问 Location 的理解:
- 位置提供者需要权限 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 位置提供者通常提供较低的准确度和较高的时间。
不知道为什么会这样。