【发布时间】:2014-09-17 13:29:08
【问题描述】:
这是场景。我需要优先考虑从卫星获取 GPS。但是,如果在室内,则不会收到新的位置。我所做的是如果 2 分钟后没有收到新的位置,那么我将切换到网络 GPS。但是,如果用户出去了,应用程序不会知道怎么办,因为它已经在收听网络 GPS,它不会再从卫星接收位置了。
因此,如果我可以收听新的位置更新,天气来自卫星或网络,那就更好了。不过如果我能优先考虑来自卫星的那些,那就更好了。
我发现了这个问题,选择的答案真的很有帮助:Android LocationListener Switching from GPS to Network
但只有一部分让我感到困惑。他说: 您为两个提供者设置了相同的 LocationListener。要确定您接收位置的位置,您需要像这样对其进行测试:
public void onLocationChanged(Location fix) {
if(fix.getProvider().equals(LocationManager.GPS_PROVIDER)){
//here Gps
} else if(fix.getProvider().equals(LocationManager.NETWORK_PROVIDER)){
//here Network
}
}
如果是这种情况,我该如何禁用仅从网络提供商处接收更新?因为如果我使用单个侦听器同时侦听 gps 和网络,那么当我执行removeUpdates(thatListener) 时,该侦听器将不再接收任何(卫星或网络)gps 更新。
但如果他说我将制作 2 个完全相同的听众(除了一个用于卫星,一个用于网络),那么我不需要检查哪个提供商提供了位置,因为每个听众都会有它自己的onLocationChanged 方法。我错过了什么吗?我没有足够的声誉,所以我不能直接评论他的回答
另外,卫星 GPS 通常需要多长时间才能接收到位置更新?
非常感谢! :)
【问题讨论】:
标签: android networking gps satellite