0

如何在Android中获取以前的位置?我正在尝试制作一个每 30 秒更新一次位置的应用程序,我想通过查找先前位置和当前位置之间的距离来测量我的旅行量。但是,我只能获得当前位置。这是我的代码

public void onCreate(Bundle savedInstanceState)
{   //This is for the UI
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    showData = (TextView)findViewById(R.id.showText);
    start = (Button)findViewById(R.id.startButton);
    stop = (Button)findViewById(R.id.stopButton);

    start.setOnClickListener(globalListener);
    stop.setOnClickListener(globalListener);
   //This is for the Location
   locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER,10,10,this);
}
public void onLocationChanged(Location location)
{

    distance = location.distanceTo(previousLocation);
    meter = distance + meter;
    showData.setText(Double.toString(meter));
}

public void onStatusChanged(String provider, int status, Bundle extras) {
    //To change body of implemented methods use File | Settings | File Templates.
}

public void onProviderEnabled(String provider) {
    //To change body of implemented methods use File | Settings | File Templates.
}

public void onProviderDisabled(String provider) {
    //To change body of implemented methods use File | Settings | File Templates.
}
4

2 回答 2

1

为什么不存储当前位置,然后在 30 秒后读取此存储值。
通过这样做,您可以从新值中减去它并获得您正在寻找的结果。

定义两个变量

Location oldLocation;
Location newLocation;

然后你可以在一个循环中做这样的事情:

oldLocation = newLocation;
newLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//Here you can start calculating

确保在进入循环之前设置 newLocation。

这是你要找的吗?

于 2013-06-06T01:12:03.543 回答
0

Android 系统只保留它获得的最后一个位置。它不存储任何以前的位置。您必须自己实施。每次获得位置更新时,请保存位置。下次您请求并获取新位置时,您将有旧位置与之进行比较。

于 2013-06-06T03:42:42.187 回答