我有我自己的位置類。我有一個可能性結果,當我使用我的課程搜索GPS位置時,我返回0和0。Android位置無法返回自定義類別的位置
而如果我搜索了getLastKnown功能在GPS定位經理,我得到的強制值:
public Location getGPSloc(Context c){
isGPSavailable(c);
if(gps_enabled)
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, locationListenerGps);
timerGPS = new Timer();
timerGPS.schedule(new GetLastLocationGPS(), 45000);
return gpsLoc;
}
這是我從函數外部調用類的,我用this.getApplicationContext ()在通話中。這是GetLastLocationGPS():
class GetLastLocationGPS extends TimerTask {
@Override
public void run() {
lm.removeUpdates(locationListenerGps);
if(gps_enabled){
gpsLoc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);}
else{
gpsLoc = null;
}
}
}
這裏的聽衆:
LocationListener locationListenerGps = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
timerGPS.cancel();
gpsLoc = location;
lm.removeUpdates(this);
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
當我打電話MyLocationInstance.getGPSloc(this.getApplicationContext())的返回值始終爲0,0。我有一個強制值83 43,我發送到模擬器,並顯示如果我在LocationManagerInstance.getLastKnownLocation(LM.GPS)子;
我不知道爲什麼這種方法不會獲取位置。
是不是因爲理論上定時器在通話發生時仍在運行?這是我能拿出答案的唯一方法。任何其他想法?
更新。我更改了代碼,以便gpsLoc在開始新位置請求之前定義爲來自GPS提供者的getLastKnownLocation。這將返回最後一個已知值的值。現在我想到了,儘管我可能想要將我的請求綁定到UI線程,以使onCreate方法停滯,直到GPSLoc完成搜索新位置。 – user2097211