Calculate elevation - just a test right now (see #28)
This commit is contained in:
parent
ca0b9017d9
commit
ed0d53e336
2 changed files with 40 additions and 0 deletions
|
@ -559,6 +559,10 @@ public class MainActivityTrackFragment extends Fragment implements AdapterView.O
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
|
|
||||||
|
// todo remove
|
||||||
|
StorageHelper storageHelper = new StorageHelper(mActivity);
|
||||||
|
storageHelper.calculateTrackElevation(mTrack);
|
||||||
|
|
||||||
// display track on map
|
// display track on map
|
||||||
displayTrack();
|
displayTrack();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.y20k.trackbook.helpers;
|
package org.y20k.trackbook.helpers;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.location.Location;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.os.EnvironmentCompat;
|
import android.support.v4.os.EnvironmentCompat;
|
||||||
|
@ -358,4 +359,39 @@ public class StorageHelper implements TrackbookKeys {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Calculates positive and negative elevation of track */ // todo make private
|
||||||
|
public Track calculateTrackElevation(@Nullable Track track) {
|
||||||
|
double positiveElevation = 0;
|
||||||
|
double negativeElevation = 0;
|
||||||
|
double LIKELY_MEASUREMENT_ERROR = 25; // move to TrackbookKeys
|
||||||
|
|
||||||
|
if (track != null && track.getWayPoints().size() > 0 && track.getWayPointLocation(0).getAltitude() != 0) {
|
||||||
|
Location previousLocation;
|
||||||
|
Location nextLocation;
|
||||||
|
|
||||||
|
// iterate over track
|
||||||
|
for (int i = 0; i < track.getWayPoints().size() - 1; i++ ) {
|
||||||
|
// calculate elevation difference
|
||||||
|
previousLocation = track.getWayPointLocation(i);
|
||||||
|
nextLocation = track.getWayPointLocation(i + 1);
|
||||||
|
double difference = nextLocation.getAltitude() - previousLocation.getAltitude();
|
||||||
|
LogHelper.i(LOG_TAG, "next:" + nextLocation.getAltitude() + " | prev:" + previousLocation.getAltitude() + " | diff:" + difference); // todo remove
|
||||||
|
|
||||||
|
// add difference to elevation
|
||||||
|
if (difference > 0 && difference < LIKELY_MEASUREMENT_ERROR) {
|
||||||
|
positiveElevation = positiveElevation + difference;
|
||||||
|
} else if (difference < 0 && difference > -LIKELY_MEASUREMENT_ERROR) {
|
||||||
|
negativeElevation = negativeElevation + difference;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String toastString = "Calculated elevation: +" + positiveElevation + " / " + negativeElevation + " meters"; // todo remove
|
||||||
|
Toast.makeText(mContext, toastString, Toast.LENGTH_LONG).show(); // todo remove
|
||||||
|
LogHelper.i(LOG_TAG, toastString); // todo remove
|
||||||
|
}
|
||||||
|
return track;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue