Added marker type "stopOver crumb".

This commit is contained in:
y20k 2016-09-01 14:16:32 +02:00
parent c636886e90
commit c68c6bc32e
5 changed files with 44 additions and 23 deletions

View file

@ -142,18 +142,19 @@ public class TrackerService extends Service implements TrackbookKeys {
// get number of previously tracked WayPoints // get number of previously tracked WayPoints
int trackSize = mTrack.getWayPoints().size(); int trackSize = mTrack.getWayPoints().size();
if (trackSize > 0) { if (trackSize == 0) {
// get last waypoint and compare it to current location
Location lastWayPoint = mTrack.getWayPointLocation(trackSize-1);
if (LocationHelper.isNewWayPoint(lastWayPoint, mCurrentBestLocation)) {
LogHelper.v(LOG_TAG, "!!! Ding. " + mTrack.getSize());
// if new, add current best location to track
newWayPoint = mTrack.addWayPoint(mCurrentBestLocation);
}
} else {
// add first location to track // add first location to track
newWayPoint = mTrack.addWayPoint(mCurrentBestLocation); newWayPoint = mTrack.addWayPoint(mCurrentBestLocation);
LogHelper.v(LOG_TAG, "!!! Dong. " + mTrack.getSize()); LogHelper.v(LOG_TAG, "mTrack.addWayPoint. Tracksize: " + trackSize); // TODO remove
} else {
// get last waypoint and compare it to current location
Location lastWayPoint = mTrack.getWayPointLocation(trackSize - 1);
if (LocationHelper.isNewWayPoint(lastWayPoint, mCurrentBestLocation)) {
// if new, add current best location to track
newWayPoint = mTrack.addWayPoint(mCurrentBestLocation);
LogHelper.v(LOG_TAG, "mTrack.addWayPoint. Tracksize: " + trackSize); // TODO remove
}
} }
// send local broadcast if new WayPoint added // send local broadcast if new WayPoint added

View file

@ -83,8 +83,17 @@ public class Track implements TrackbookKeys, Parcelable {
// add up distance // add up distance
mTrackLength = addDistanceToTrack(location); mTrackLength = addDistanceToTrack(location);
boolean stopOver;
int wayPointCount = mWayPoints.size();
if (wayPointCount == 0) {
stopOver = false;
} else {
Location lastLocation = mWayPoints.get(wayPointCount - 1).getLocation();
stopOver = LocationHelper.isStopOver(lastLocation, location);
}
// create new waypoint // create new waypoint
WayPoint wayPoint = new WayPoint(location, LocationHelper.isStopOver(location), mTrackLength); WayPoint wayPoint = new WayPoint(location, stopOver, mTrackLength);
// add new waypoint to track // add new waypoint to track
mWayPoints.add(wayPoint); mWayPoints.add(wayPoint);
@ -120,13 +129,13 @@ public class Track implements TrackbookKeys, Parcelable {
int wayPointCount = mWayPoints.size(); int wayPointCount = mWayPoints.size();
// at least two data points are needed // at least two data points are needed
if (wayPointCount >= 2) { if (wayPointCount >= 1) {
// add up distance // add up distance
Location lastLocation = mWayPoints.get(wayPointCount-2).getLocation(); Location lastLocation = mWayPoints.get(wayPointCount - 1).getLocation();
mTrackLength = mTrackLength + lastLocation.distanceTo(location); return mTrackLength + lastLocation.distanceTo(location);
} }
return mTrackLength; return 0f;
} }

View file

@ -35,6 +35,7 @@ public final class LocationHelper {
/* Main class variables */ /* Main class variables */
// private static final int TWO_MINUTES = 1000 * 1000 * 60 * 2; // private static final int TWO_MINUTES = 1000 * 1000 * 60 * 2;
private static final long FIVE_MINUTES = 5L * 60000000000L; // 2 minutes
private static final long TWO_MINUTES = 2L * 60000000000L; // 2 minutes private static final long TWO_MINUTES = 2L * 60000000000L; // 2 minutes
private static final long TWENTY_SECONDS = 20000000000L; // 20 seconds private static final long TWENTY_SECONDS = 20000000000L; // 20 seconds
@ -142,10 +143,10 @@ public final class LocationHelper {
} }
/* Checks if given location is a new waypoint over */ /* Checks if given location is a new waypoint */
public static boolean isNewWayPoint(Location lastWayPoint, Location newLocation) { public static boolean isNewWayPoint(Location lastLocation, Location newLocation) {
float distance = newLocation.distanceTo(lastWayPoint); float distance = newLocation.distanceTo(lastLocation);
long timeDifference = newLocation.getElapsedRealtimeNanos() - lastWayPoint.getElapsedRealtimeNanos(); long timeDifference = newLocation.getElapsedRealtimeNanos() - lastLocation.getElapsedRealtimeNanos();
// distance is bigger than 10 meters and time difference bigger than 20 seconds // distance is bigger than 10 meters and time difference bigger than 20 seconds
return distance > 10 && timeDifference >= TWENTY_SECONDS; return distance > 10 && timeDifference >= TWENTY_SECONDS;
@ -153,9 +154,9 @@ public final class LocationHelper {
/* Checks if given location is a stop over */ /* Checks if given location is a stop over */
public static boolean isStopOver(Location location) { public static boolean isStopOver(Location lastLocation, Location newLocation) {
// TODO determine, if location is stopover long timeDifference = newLocation.getElapsedRealtimeNanos() - lastLocation.getElapsedRealtimeNanos();
return false; return timeDifference >= FIVE_MINUTES;
} }

View file

@ -92,7 +92,7 @@ public final class MapHelper {
// create marker // create marker
Drawable newMarker; Drawable newMarker;
if (wayPoint.getIsStopOver()) { if (wayPoint.getIsStopOver()) {
newMarker = AppCompatDrawableManager.get().getDrawable(context, R.drawable.ic_my_location_crumb_blue_24dp); newMarker = AppCompatDrawableManager.get().getDrawable(context, R.drawable.ic_my_location_crumb_grey_24dp);
} else { } else {
newMarker = AppCompatDrawableManager.get().getDrawable(context, R.drawable.ic_my_location_crumb_blue_24dp); newMarker = AppCompatDrawableManager.get().getDrawable(context, R.drawable.ic_my_location_crumb_blue_24dp);
} }

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="96.0"
android:viewportWidth="96.0"
android:width="24dp">
<path
android:fillColor="@color/trackbook_grey_light"
android:pathData="M48,48m-24,0a24,24 0,1 1,48 0a24,24 0,1 1,-48 0"/>
</vector>