我在定位系统方面遇到了一些问题。 我有一个实现 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/