【问题标题】:How do I remove only the network provider if my listener listens for both network and satellite gps?如果我的听众同时监听网络和卫星 gps,如何仅删除网络提供商?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多