我正在尝试制作一个跟踪用户运动的应用程序。
到目前为止,我有一个可以显示位置和“速度”的应用
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()
中相应地更新它们。