使用LocationListener进行GPS运动跟踪器

时间:2016-07-25 11:26:19

标签: java android gps locationlistener

我正在尝试创建一个跟踪用户移动的应用。 到目前为止,我有一个应用程序,显示位置和"速度"

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);
}

这是我的代码。 但我想得到我的速度,行程距离以及最大和最小高度。 如果有人能提供帮助,请做,非常感谢!

1 个答案:

答案 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; } 中相应地更新它们。