我正在尝试创建一个跟踪用户移动的应用。 到目前为止,我有一个应用程序,显示位置和"速度"
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);
}
这是我的代码。 但我想得到我的速度,行程距离以及最大和最小高度。 如果有人能提供帮助,请做,非常感谢!
答案 0 :(得分:1)
您可以在此处找到如何计算两个位置之间的距离:merge
。我会计算long startTime = System.currentTimeMillis(); //(in onCreate()
long currentTime = System.currentTimeMillis(); //(in onLocationChanged())
long deltaTimeInSeconds = (currentTime - startTime) * 1000;
double speed = tripDistance / deltaTimeInSeconds;
中每个位置之间的距离,并将这些距离添加到tripDistance。
当你有距离时,通过将距离除以时间来计算速度很容易:
loc.getAltitude();
要拥有高度,您可以使用double minAltitude, maxAltitude;
。您可以有两个变量:onLocationChanged()
,并且在每个int tokens = 50;
double[] percentages = new double[] {0.3725, 0.219, 0.115, 0.2935};
int total = 0;
for(double d : percentages){
int amount = (int) (tokens * d);
total += amount;
}
中相应地更新它们。