我正在尝试制作一个跟踪用户运动的应用程序。
到目前为止,我有一个可以显示位置和“速度”的应用

protected void onCreate(Bundle savedInstanceState);
setContentView(R.layout.main);

txt = (TextView)findViewById(R.id.textView);
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

LocationListener locationListener = new MyLocationListener();
locationListener.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,10,locationListener);

}
private class MyLocationListener implements LocationListener
{
public void onLocationChanged(Location loc){
String longitude = "Long: "+ loc.getLongitude();
String latitude = "Lat: "+ loc.getLatitude();
txt.setText(longitude + latitude);
}


这是我的代码。
但我想获取速度,行进距离以及最大和最小高度。
如果有人可以帮助您,将不胜感激!

最佳答案

您可以在此处找到如何计算两个位置之间的距离:Calculating distance between two geographic locations。我将计算onLocationChanged中每个位置之间的距离,并将这些距离相加即可得出tripDistance。

当您有距离时,很容易通过将距离除以时间来计算速度:

long startTime = System.currentTimeMillis(); //(in onCreate()
long currentTime = System.currentTimeMillis(); //(in onLocationChanged())
long deltaTimeInSeconds = (currentTime - startTime) * 1000;
double speed = tripDistance / deltaTimeInSeconds;


要获得高度,可以使用loc.getAltitude();。您可以有两个变量:double minAltitude, maxAltitude;,并在每个onLocationChanged()中相应地更新它们。

10-08 05:33