【发布时间】:2012-04-04 20:37:05
【问题描述】:
我在定位系统方面遇到了一些问题。 我有一个实现 locationlistener 的服务。 我想尽可能使用网络获得最佳位置,如果网络不够准确(准确度大于 300 公吨),则使用 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”我听位置,当我得到一个精度大于 300mt 的位置时,我想更改为 gps 定位系统。
如果我删除 allupdates 然后请求 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);
}
系统停止等待 gpsupdate,如果我在一个封闭的房间里,它可以保持几个小时没有位置更新,忽略时间更新指示。 如果 gps 没有在“x”秒内提供位置,有没有办法告诉 locationprovider 切换到网络?或者如何理解 gps 何时没有本地化?
或者如果我同时向 2 个提供商(网络和 gps)请求位置更新,会不会有问题?
有什么建议吗?
【问题讨论】:
标签: android gps location locationmanager