这是场景。我需要优先考虑从卫星获取 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 通常需要多长时间才能接收到位置更新?
非常感谢!:)