Android获得最佳位置

时间:2011-09-26 14:34:11

标签: android 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();

    }

3 个答案:

答案 0 :(得分:3)

你应该看看:http://developer.android.com/guide/topics/location/obtaining-user-location.html 特别是函数:isBetterLocation

我可能会使用像isBetterLocation这样的东西。因为查看位置更新的年龄非常重要。至少如果你真的想知道用户知道的位置而不是用户所在的位置。

但是你可以在你描述的自己的功能中实施时间检查。

答案 1 :(得分:1)

您可以使用https://github.com/balwinderSingh1989/androidBestLocationTracker

Android最佳位置跟踪器是一个Android库,可帮助您通过名为BaseLocationStrategy的对象获取用户最佳位置,该对象将使用准确性算法来提供准确的位置

有关用法,请参考项目的“自述文件”。

答案 2 :(得分:0)

您可以检查Google的官方文档。 Define a model for the best performance

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

  1. 检查检索到的位置是否比以前的估计新得多。
  2. 检查该位置声称的准确性是否好于先前的估计。
  3. 检查新位置来自哪个提供商,并确定您是否更信任它。

enter image description here