在我的活動中,我需要使用gps獲取手機的當前位置。我已經使用了以下代碼:Android gps getlastknownlocation返回空指針異常
Location gpslocation;
LocationManager lmanager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
gpslocation= lmanager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//error in the next line as follows java.lang.nullpointerexception
gpslatitude=gpslocation.getLatitude();
gpslongitude=gpslocation.getLongitude();
我知道getlastknownknownlocation會獲取固定gps的最後一個位置。在這種情況下,getlastknownlocation返回一個空指針。這就是爲什麼會出現異常,我的應用程序部隊關閉。另外我知道還有另一種使用onlocationchanged獲取GPS座標的方法。但爲了這個工作,設備必須處於移動狀態一段距離。因爲在我的應用程序中,我想以固定的方式獲取GPS座標,有沒有其他方法可以在android中使用gps獲取GPS座標。
我不想使用網絡提供者,因爲它只會給出距我當前位置實際位置約5公里的位置座標。所以我不會鼓勵在我的應用中使用網絡位置。因爲5公里的距離對我來說不是一個可以接受的範圍。是否有任何其他方式使用代碼修復GPS座標。在使用lastknownlocation的時候,我會爲我的應用程序提供解決方案。
它並不是說它們不支持它 - 它們可能沒有它。跟蹤可能已關閉很長時間沒有保存位置。如果您要求更新,請在收到一份更新後使用它,否則它會正常返回。這是跨所有設備。 –
我的設備從來沒有lastLocation,無論何時我要求 - 總是爲空。即使我在onLoctionChange之後或在使用其他使用GPS的應用程序之後立即詢問。 –
我沒有專門用於測試的設備之一,但其應該工作的方式是,如果結果是陳舊的或者它從未有過,則GLKL將返回NULL,並且如果它有一個新鮮的足夠。我傾向於懷疑它完全壞了,但我相信一些設備可能不會返回結果,除非GPS打開。無論哪種方式,比寫入共享首選項更好 - 當他需要時,他應該調用requestSingleUpdate。 –