根据我对在 Android 上访问位置的理解:

  • Location Provider 需要权限 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 位置提供者通常提供较低的准确度和较高的时间。

    不知道为什么会这样。

    最佳答案

    精度测量是以米为单位的位置精度,因此较低的值表示更精确的位置。因此,精确到 60.0 米以内的位置在任何方向上最多可能偏离 60m,而精确到 5.0 米以内的位置最多只能偏离 5m。

    关于android - FINE_LOCATION 的准确度低于 COARSE_LOCATION,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6549989/

    10-10 10:16