我的定位系统有一些问题。
我有一个实现位置侦听器的服务。
我希望尽可能使用网络获得最佳位置,如果网络不够准确(精度大于 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”秒内给出位置,是否有办法告诉 locationprovider 切换到网络?或者如何理解 GPS 未本地化的情况?
或者如果我同时向 2 个提供商请求位置更新(网络和 GPS),可能会出现问题吗?
有什么建议吗?