Android获得最佳位置

Android获得最佳位置,android,gps,Android,Gps,我想要用户的确切位置。因此,我创建了两个侦听器: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mGPSListener); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mNetworkListener); 我正在收听来自网络和gps提供商的位置更新,希望检查两者获得的位置的准确

我想要用户的确切位置。因此,我创建了两个侦听器:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mGPSListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mNetworkListener);
我正在收听来自网络和gps提供商的位置更新,希望检查两者获得的位置的准确性,以便我能够选择准确的位置。我只是想问,我是不是用正确的方式来实现。。。???如果没有,请提供一些指导如何做到这一点

我的示例代码是:

if(MyGPSListener.currentLocation != null) {
        if(MyNetworkListener.currentLocation != null) {
            if(MyGPSListener.currentLocation.getAccuracy() <= MyNetworkListener.currentLocation.getAccuracy()) {
                useGPSLocation();

            }
            else if(MyGPSListener.currentLocation.getAccuracy() > MyNetworkListener.currentLocation.getAccuracy()) {
                useNetworkLocation();

            }
        }
        else {
            useGPSLocation();

        }

    }
    else if(MyNetworkListener.currentLocation != null){
        useNetworkLocation();

    }
if(MyGPSListener.currentLocation!=null){
if(MyNetworkListener.currentLocation!=null){
if(MyGPSListener.currentLocation.getAccuracy()MyNetworkListener.currentLocation.getAccuracy()){
useNetworkLocation();
}
}
否则{
useGPSLocation();
}
}
else if(MyNetworkListener.currentLocation!=null){
useNetworkLocation();
}

您应该看看: 特别是功能:isBetterLocation

我可能会使用类似isBetterLocation的东西。因为查看位置更新的历史非常重要。至少如果你真的想知道用户在哪里,而不是用户在哪里


但是您肯定可以在您自己描述的函数中实现时间检查

你可以查看谷歌的官方文档。

并验证位置定位的准确性:

  • 检查检索到的位置是否比以前的估计值明显新
  • 检查该位置声称的准确度是否比之前的估计值更好或更差
  • 检查新位置来自哪个提供商,并确定您是否更信任它
  • 您可以使用

    Android Best Location Tracker是一个Android库,它通过一个名为BaseLocationStrategy的对象帮助您获得用户的最佳位置,该对象将使用精度算法给出准确的位置


    有关用法,请参阅项目的“自述”

    你为什么不先尝试一下呢?你需要包含更多的代码,因为我只看到一小部分。但是当你得到这个位置时,你可以用你保存的新位置和旧位置来调用isBetterLocation。如果你使用它更好,如果不使用,请不要使用该位置。