我想要用户的确切位置。所以我创建了两个监听器:
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();
}
答案 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
并验证位置定位的准确性: