0

我正在使用LocationClient方法来检索用户的当前位置。它工作得很好,但有时由于明显的原因(我在里面,使用 WIFI 等)而不准确。我想知道是否确定使用什么位置提供程序来获取位置。无论我在室内还是室外,getProvider() 都会返回“fused”。我只需要告诉用户他没有得到准确的位置可能是因为他在里面。更好的是,告诉用户使用什么 Provider 来获取他的位置。

4

2 回答 2

0

检查以下代码以获取位置提供者列表 -

List<String> matchingProviders = locationManager.getAllProviders();
for (String provider: matchingProviders) {
  Location location = locationManager.getLastKnownLocation(provider);
  if (location != null) {
    float accuracy = location.getAccuracy();
    long time = location.getTime();

    if ((time > minTime && accuracy < bestAccuracy)) {
      bestResult = location;
      bestAccuracy = accuracy;
      bestTime = time;
    }
    else if (time < minTime && 
             bestAccuracy == Float.MAX_VALUE && time > bestTime){
      bestResult = location;
      bestTime = time;
    }
  }
}

希望这对您有所帮助。

于 2014-10-30T14:41:27.813 回答
0

您可以使用 isProviderEnabled 方法检查提供程序是否可用:

        mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
        mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
于 2014-10-30T14:36:09.607 回答