2012-03-20 61 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

相關問題