我在定位系统上遇到了一些问题。 我有一个实现了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定位系统。
如果我删除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,如果我在一个房间接近它我可以不留数小时位置更新,忽略时间更新指示。 有没有办法告诉locationprovider切换到网络,如果gps没有提供一个位置在“x”秒?或如何理解何时GPS不本地化?
或者如果我requestlocationupdates在同一时间(网络和gps)从2提供者,可以是一个问题?
有什么建议吗?
感谢您的联系。 现在我改变了我所有的服务与报警控制来自gps的更新请求。我正在检查wifi位置,如果它不够准确,我检查gps,如果我在60秒内无法获得任何gpslocation,我会删除gpslistener的locationupdates,并将其留在networklistener上。 但它没有工作的一切,我想如何:当我问gpsupdate,gps图标正确出现,但它保持固定,似乎什么都不做,我不接受在60秒内的位置。 60多岁后,我的服务停止收听并且图标消失。我忘记了什么可以开启gps并获得一个loc? – Rabarama 2012-03-20 17:06:01
我只想让听众开启。您将在适当时收到更新。无论是在时间还是空间上,时间间隔都旨在通过在您甚至连接之前设置最短距离/间隔测量来切断不必要的回叫。只要相信回调中出现的结果,并根据指南的建议分析其时间戳和元数据。如果您在GPS锁定后没有获得任何新的位置信息可能不值得 - 我会立即获得新信息,除非我使用的是Wi-Fi,这已经是一个非常好的解决方案。 – slezica 2012-03-21 01:09:50