1

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

非常感谢!:)

4

1 回答 1

0

我想新的 Fused 位置提供程序是为满足您的需求而设计的。让 Google 为您完成这项工作,并始终提供最好的 Provider。您需要为此安装 Google Play 服务,但这几乎没有问题。有了这个,设置 Locationservice 变得容易多了。请参阅此处以获取一个很好的示例。

于 2014-09-17T13:49:39.717 回答