android - 同时有多个位置提供者

标签 android gps location locationmanager

我在定位系统方面遇到了一些问题。 我有一个实现 locationlistener 的服务。 我想尽可能使用网络获得最佳位置,如果网络不够准确(精度大于 300mt),则使用 gps。 问题是这样的。我需要每 5 分钟定位一次(尽可能准确,否则不准确)。 我从一个开始:

    LocationManager lm=(LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_COARSE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);        
    String provider=lm.getBestProvider(criteria, true);
    if(provider!=null){


    lm.requestLocationUpdates( provider,5*60*1000,0,this);

在“onLocationChanged”中我监听位置,当我得到一个精度大于 300 米的位置时,我想切换到 gps 定位系统。

如果我删除所有更新,然后请求 gps 更新,如下所示:

lm.removeUpdates((android.location.LocationListener) this);
Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);        
    String provider=lm.getBestProvider(criteria, true);
    if(provider!=null){
    lm.requestLocationUpdates( provider,5*60*1000,0,this);
    }

系统停止等待 gps 更新,如果我在一个封闭的房间里,它可以保持几个小时没有位置更新,忽略时间更新指示。 如果 gps 在“x”秒内没有给出位置,有没有办法告诉位置提供者切换到网络?或者如何理解 gps 何时未定位?

或者如果我同时从 2 个供应商(网络和 gps)请求位置更新,会不会有问题?

有什么建议吗?

最佳答案

我正在写一个特定于您的问题的答案,但后来我意识到我的答案无法与这个 excellent resource 竞争Android 开发指南提供。它解释了位置监听器的方法、原因、优缺点。

如果您要在 Android 中使用 GPS,那么这是一本必读的书。它回答了您的上述问题以及更多问题。相信我,这值得你花时间。

每个 SDK 还提供了示例,这些示例实现了有用的示例。我很确定这是一个位置示例。

关于android - 同时有多个位置提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9785768/

相关文章:

android - 使用融合位置获取卫星数量

react-native - 如何使用 HMS 模拟对华为的立场

java - Java获取用户当前的经纬度

node.js - 无法使用 nginx 隐藏位置的端口

android - android中透明imageView的边框

android - 自动点击提交按钮以及如何通过提交按钮的时间限制?

android - 以编程方式无法在 RelativeLayout 中对齐 ImageView

android - 从静态 fragment 类调用主类中的方法

android - 计算一段时间内行驶距离的最佳方法是什么?

java - 获取当前经纬度android