我在定位系統上遇到了一些問題。 我有一個實現了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