目前我正在做一個延遲發送到服務器GPS位置。位置(lat和long)需要每3分鐘發送一次,現在爲了測試目的,它每隔20秒發送一次,我正在記錄座標以驗證輸出。這裏的問題是,當我在地理修復模擬器中的位置(我沒有設備測試),記錄器類打印所有我最新的固定位置,而不僅僅是最後一個。與postDelayed處理程序的作品,這是我的課。Gps延遲位置
此代碼來自@kyogs。
public class LocalizadorGps extends Service {
private LocationManager mlocmag;
LocationListener mloclist;
private long UPDATE_INTERVAL;
private double latn,longn;
public Location loc;
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mlocmag = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mloclist = new MyLocationList();
loc = mlocmag.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc == null) {
loc = mlocmag.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
updateServer(loc);
mlocmag.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 1000,mloclist);
}
public void updateServer(final Location loc) {
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
if (loc != null) {
final double latitude = loc.getLatitude();
final double longitude = loc.getLongitude();
Log.v("COORDINATES", Double.toString(latitude) + " " + Double.toString(longitude));
} else {
System.out.println("Location not avilable");
}
handler.postDelayed(this, 20000);
}
};
handler.postDelayed(runnable, 20000);
}
@Override
public void onDestroy() {
super.onDestroy();
mlocmag.removeUpdates(mloclist);
}
@Override
public boolean stopService(Intent name) {
return super.stopService(name);
}
public class MyLocationList implements LocationListener {
public void onLocationChanged(Location location) {
updateServer(location);
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
我這樣做:
geo fix 44.41 56.75
,輸出是:
06-27 04:03:55.736 13743-13743/com.example.testingui
V/COORDINATES: 56.75 44.409998333333334
然後我解決一個多個位置:
geo fix 44.44 80.33
,輸出爲:
06-27 04:04:15.756 13743-13743/com.example.testingui
V/COORDINATES: 56.75 44.409998333333334
06-27 04:04:19.725 13743-13743/com.example.testingui
V/COORDINATES: 80.32999833333334 44.43999833333334
它重複先前固定的位置和新的位置。所需行爲只是最後一個位置。
,最後一個:
geo fix 44.44 33.67
輸出:
06-27 04:04:35.767 13743-13743/com.example.testingui
V/COORDINATES: 56.75 44.409998333333334
06-27 04:04:39.686 13743-13743/com.example.testingui
V/COORDINATES: 33.669999999999995 44.43999833333334
06-27 04:04:39.736 13743-13743/com.example.testingui
V/COORDINATES: 80.32999833333334 44.43999833333334
它重複最後三個固定位置。 (看看輸出的時間)。再次,所需的行爲只是最後一個固定位置。
note:我用Timer而不是處理程序測試了這個,我得到了相同的結果!
所以我的問題在這裏,就是:
我在做什麼可怕的錯誤?我無法找到問題:(。
只是好奇你爲什麼要在UpdateServer()函數中使用'final'關鍵字的位置變量? –