2012-06-21 55 views
0

我想獲取用戶的最後一個已知位置,我使用getLastKnownLocation方法,因爲我只想讀取一次位置,我在模擬器中測試應用程序不是真實的手機,但位置是空,我的代碼在Android模擬器中查找最後一個已知位置

locMgr = (LocationManager) getSystemService(LOCATION_SERVICE); 
Location myLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
if(myLoc != null) 
{} 
else 
{ 
Toast.makeText(getApplicationContext(), "coudn't get your location", Toast.LENGTH_LONG).show(); 
} 

的問題是,我不知道什麼時候發送位置(從DDMS)到仿真器(我試過之前和打開應用程序後,將其發送有時會起作用)

我可以通過使用LocationListener獲取位置並執行:

mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE); 
mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 3, this); 

並覆蓋可正常工作的onLocationChanged()方法,但它會告訴我每次位置變化時,我只需要讀取一次位置。 那麼如何獲得用戶的當前位置一次?

回答

0

爲什麼不創建一個服務或一個位置確定後可以回調的線程?這樣你可以經常檢查每一個。

+0

不,我只是想獲得一次位置,這種方法有什麼問題?不能用getLastKnownLocation()方法完成 –

+0

很明顯,它不像預期的那樣工作,但聽起來像是在一段未知數量的時間之後,你纔得到有效的響應。無論這種延遲的原因是什麼,一個線程會讓你的應用程序等待響應,同時繼續爲用戶創建顯示並允許交互。 –

+0

問題是,使用requestLocationUpdates(),它工作正常,沒有延遲, 我在模擬器中測試(getLastKownLocation()),所以我發送的位置,所以不應該有任何延遲,實際上它不是延遲只是它不起作用(返回null) –

相關問題