这是场景。我需要优先从卫星获取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通常需要多长时间才能接收位置更新?
非常感谢! :)
答案 0 :(得分:0)
我想新的Fused位置提供商是为满足您的需求而设计的。让Google为您完成这项工作,并始终将最好的提供商提供给您。您需要安装Google Play服务,但这几乎没有问题。使用它可以更轻松地设置Locationservice。请参阅here以获取一个很好的示例。