我在定位系统方面遇到了一些问题。 我有一个实现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”中我会听取位置,当我得到一个精度超过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,如果我在一个关闭的房间,它可以保持几个小时没有位置更新,忽略timeupdate指示。 如果gps没有在“x”秒内给出位置,有没有办法告诉locationprovider切换到网络?或者如何理解gps何时没有本地化?
或者如果我同时从2个提供商请求位置更新(网络和gps),可能会出现问题?
有什么建议吗?
答案 0 :(得分:1)
我正在写一个特定于你的问题的答案,但后来我意识到我的anser无法与Android开发指南提供的excellent resource竞争。它解释了位置听众的方法,原因,利弊。
如果您要在Android中走GPS路,这是必读的。它回答了您的上述问题以及更多问题。相信我,值得你花时间。
每个SDK都提供了实现有用示例的示例。我很确定这是一个位置示例。