2010-03-06 60 views
0

我有這一點的代碼;爲什麼這個工作在Android 1.5而不是1.6(位置管理器)

lm = (LocationManager) 
getSystemService(Context.LOCATION_SERVICE); 

gpslocation = Double.toString(lm.getLastKnownLocation("gps").getLatitude()) +" " 
+ Double.toString(lm.getLastKnownLocation("gps").getLongitude()); 

這兩個模擬器和我的英雄運行Android 1.5系統工作正常,但它強制關閉在1.6的模擬器,也對我的紋身。

什麼由1.5改爲1.6?

好的,用這個代替;

lm = (LocationManager) 
    getSystemService(Context.LOCATION_SERVICE); 

    Double latPoint = null; 
    Double lngPoint = null; 

    Location loc = lm.getLastKnownLocation("gps"); 
    if(loc != null) { 
     latPoint = lm.getLastKnownLocation("gps").getLatitude(); 
     lngPoint = lm.getLastKnownLocation("gps").getLongitude(); 

    } else { 

    } 

    Toast.makeText(getBaseContext(),"test lat " + latPoint, Toast.LENGTH_LONG).show(); 

如果我在運行應用程序之前在模擬器上觸發位置,我會得到空烤麪包和空烤麪包。

回答

2

通常,在Eclipse中使用adb logcat,DDMS或DDMS透視圖來查看與「強制關閉」對話框關聯的Java堆棧跟蹤,以查看問題是什麼。

在你的情況下,它不會工作,因爲你沒有打開代碼段中的GPS。

除非該供應商已啓動並運行,否則您無法在供應商處可靠地調用getLastKnownLocation()。在你的情況下,GPS可能沒有運行,並且getLastKnownLocation()將返回null

getLastKnownLocation()工作之前,您需要註冊位置更新或接近警報,以啓動GPS無線電並尋求修復。此外,使用模擬器時,您需要在註冊位置更新之後提交修補程序(例如,通過DDMS)或在getLastKnownLocation()之前返回非null值。

+0

錯誤是一個java lang空指針錯誤,所以我想它是返回null。我在另一個班上有一個位置監聽器,但在這裏我只想知道最後一個已知位置。什麼從1.5改變到1.6使這不起作用? – Mark