我创建了一个 android 应用程序,每 2 秒获取一次位置的纬度和经度。该应用程序运行良好,但是当我将我的android设备保持在一个位置时,我会得到不同的纬度和经度......令人惊讶的是,即使所有这些不同的坐标都指向同一个位置,即使它们不同。
例如对于一个恒定的位置
我越来越喜欢
Latitude - 10.013499
Longitude - 76.3303451
2 秒后
Latitude - 10.0135014
Longitude - 76.3303467
2 秒后
Latitude - 10.0135001
Longitude - 76.3303451
2 秒后
Latitude - 10.0135011
Longitude - 76.3303466
谁能告诉我为什么我会这样..
我们如何才能获得给定点的独特纬度和经度。
我的代码如下
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class AndroidGPSTrackingActivity extends Activity {
Button btnShowLocation, stop;
double latitude, longitude;
int is = 0;
ScheduledExecutorService scheduler;
// GPSTracker class
GPSTracker gps;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnShowLocation = (Button) findViewById(R.id.btnShowLocation);
stop = (Button) findViewById(R.id.stop);
// show location button click event
btnShowLocation.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// create class object
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println("sss");
// Log.i("hello", "world");
is++;
Log.i("hello", "" + is);
runOnUiThread(new Runnable() {
public void run() {
gps = new GPSTracker(
AndroidGPSTrackingActivity.this);
latitude = gps.getLatitude();
longitude = gps.getLongitude();
Toast.makeText(
getApplicationContext(),
"Your Location is - \nLat: " + latitude
+ "\nLong: " + longitude,
Toast.LENGTH_SHORT).show();
}
});
}
}, 2, 2, TimeUnit.SECONDS);
}
});
stop.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
scheduler.shutdown();
onDestroy();
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}