2011-08-29 52 views
2

如果有人能夠提供幫助,情況會非常好。我試圖在我的Android應用程序中設置定位,並嘗試在GPS和NETWORK提供程序上註冊locationlisteners,如同所有示例一樣。如果WiFi關閉,Android的network_provider locationprovider從不返回任何內容?

但是,我的網絡提供商從不迴應任何與網絡相關的事情,即只有在啓用了WiFi的情況下才會收到回覆。如果不是,它總是超時。

我的代碼:

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 1, locationListener); 
.... 
public void onLocationChanged(Location location) { 
     Log.d(TAG, "onLocationChanged;provider;" + location.getProvider() + ",lon;" + location.getLongitude() + ";lat;" + location.getLatitude() + ";accuracy;" + location.getAccuracy()); 
     resultHandler.handleLocationResult(location, false); 
     lm.removeUpdates(this); 

所以,如果無線網絡連接上我得到了響應相當快,但如果我只有GSM上,沒有任何反應,我什麼也看不到在Android logcat中無論是。

我已經嘗試更改requestlocationupdates中的參數以及沒有區別。

如果有什麼我可以做的不同,指針會非常感謝!

編輯:當然,我試過網絡positioing其他方式,通過運營商定位(使用短信)的作品,嘗試與谷歌地圖相同的設置,地圖可以得到我認爲的位置。當然,我有接待處:)

回答

4

我知道這幾乎是一歲,但對於其他人搜索相同的問題,我相信這是由於onLocationChanged只有在實際的NETWORK_PROVIDER返回一個不同的位置時才被調用。

因此,在這種情況下,如果達到某種超時,應該使用緩存的NETWORK_PROVIDER位置,因爲緩存的位置應該是當前位置。

即:

Location lastNetworkLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

然後檢查當getTime()和distanceTo()是合理的。

相關問題