2012-03-20 65 views
4

我在定位系统上遇到了一些问题。 我有一个实现了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提供者,可以是一个问题?

有什么建议吗?

回答

1

我正在为您的问题写一个具体的答案,但后来我意识到我的支持者无法与Android开发指南提供的excellent resource竞争。它解释了位置听众的喜好,原因,优点和缺点。

如果你要在Android的GPS道路上,这是一个必读。它回答你的上述问题等等。相信我,这值得你花时间。

还有每个SDK提供的示例实现有用的示例。我很确定这是一个位置示例。

+0

感谢您的联系。 现在我改变了我所有的服务与报警控制来自gps的更新请求。我正在检查wifi位置,如果它不够准确,我检查gps,如果我在60秒内无法获得任何gpslocation,我会删除gpslistener的locationupdates,并将其留在networklistener上。 但它没有工作的一切,我想如何:当我问gpsupdate,gps图标正确出现,但它保持固定,似乎什么都不做,我不接受在60秒内的位置。 60多岁后,我的服务停止收听并且图标消失。我忘记了什么可以开启gps并获得一个loc? – Rabarama 2012-03-20 17:06:01

+0

我只想让听众开启。您将在适当时收到更新。无论是在时间还是空间上,时间间隔都旨在通过在您甚至连接之前设置最短距离/间隔测量来切断不必要的回叫。只要相信回调中出现的结果,并根据指南的建议分析其时间戳和元数据。如果您在GPS锁定后没有获得任何新的位置信息可能不值得 - 我会立即获得新信息,除非我使用的是Wi-Fi,这已经是一个非常好的解决方案。 – slezica 2012-03-21 01:09:50

相关问题