【问题标题】:Determining the provider of Location - Android确定位置的提供者 - Android
【发布时间】:2014-10-30 14:27:49
【问题描述】:

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

【问题讨论】:

  • 您可以使用getAccuracy 值来确定您是否有准确的位置。
  • @njzk2:是否有算法或经验法则可以确定用于返回位置的内容?

标签: android location-client


【解决方案1】:

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

        mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
        mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)

【讨论】:

  • 感谢您的回复。您的代码仅检查是否启用了这些提供程序。我的问题与您的回答略有不同:)
【解决方案2】:

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

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;
    }
  }
}

希望对你有所帮助。

【讨论】:

  • 感谢您的回答。我已经在使用类似的东西(谷歌推荐的获取最佳位置的方法)。我的问题略有不同:)
猜你喜欢
  • 1970-01-01
  • 2017-07-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多