2010-10-22 47 views
1

如果沒有GPS FIX(因爲人在金屬建築物或其他東西)....它只是留在Looper .. ??或者它不斷嘗試通過requestLocationUpdates修復.. ??如果沒有GPS修復,下列代碼會做什麼?

如果我確實有一個很好的GPS FIX ....我的代碼工作正常......並在onLocationChanged()...我更新當前位置到數據庫。

另外... when is onLocationChanged()called .. ??是否只有在有GPS FIX時纔會調用? 只是想知道..

public void run() 
    { 
     Looper.prepare(); 

     LocationManager lm = (LocationManager)   getSystemService(Context.LOCATION_SERVICE); 
     LocationListener ll = new mylocationlistener(); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 

     Looper.loop(); 
    } 

回答

0

我發現(經過很多測試)GPS失敗....它會通過錯誤和崩潰我的服務。而不是殺死應用程序...我只是重新啓動服務,然後再試一次。

0

嗯,這是在生產代碼?或者你只是好奇。這絕對不是可以接受的android代碼。看看這一個想法就如何正確實施LocationListener的

http://hejp.co.uk/android/android-gps-example/

when is onLocationChanged() called

Onlocationchanged當您傳遞到requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)方法的參數都滿足時被調用。也就是說,每當minTime通過或設備移動minDistance。 (注意這些只是提示,而不是確切的數值)

+0

斯特恩和信息。好答案! – AndrewKS 2010-10-22 20:01:12

+1

這不是生產代碼。但是,我的代碼有什麼問題?我正在運行這項服務。這是抱怨我沒有Looper的地方......所以這就是我所做的。我的代碼似乎工作正常。我只是想知道當沒有GPS定位時我的代碼發生了什麼。 – Biggs 2010-10-22 20:09:14

+0

首先,它看起來像這個代碼是在某種線程。我猜這是因爲它採用「運行」方法。 'Requestlocationupdates'是異步的,所以它不需要在一個線程中。這可能是你關於looper的錯誤。你的代碼可能會工作,但你可以得到很多很差的代碼來工作。讓你的代碼編譯和運行不應該是衡量成功的標準。 – Falmarri 2010-10-22 20:34:00

相關問題