2014-10-30 48 views
0

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

+0

您可以使用'getAccuracy'值来确定您是否有准确的位置。 – njzk2 2014-10-30 14:31:22

+0

@ njzk2:是否有算法或经验法则可以确定返回该位置的内容? – programmerboy 2014-10-30 15:12:56

回答

0

您可以检查是否提供商可利用isProviderEnabled方法:

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

感谢您的回复。您的代码仅检查这些提供程序是否已启用。我的问题与你的回答略有不同:) – programmerboy 2014-10-30 15:08:57

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

希望这有助于你。

+0

感谢您的回答。我已经在使用类似的东西(Google推荐的获得最佳位置的方式)。我的问题稍有不同:) – programmerboy 2014-10-30 15:15:01

相关问题