From 7b48e40c4557e5fe48f0425d03606b3ef6a3ef68 Mon Sep 17 00:00:00 2001 From: y20k Date: Mon, 3 Apr 2017 16:23:01 +0200 Subject: [PATCH] added a new helper class that converts a track into GPX - see issue #14 --- .../org/y20k/trackbook/helpers/GpxHelper.java | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 app/src/main/java/org/y20k/trackbook/helpers/GpxHelper.java diff --git a/app/src/main/java/org/y20k/trackbook/helpers/GpxHelper.java b/app/src/main/java/org/y20k/trackbook/helpers/GpxHelper.java new file mode 100644 index 0000000..9febb93 --- /dev/null +++ b/app/src/main/java/org/y20k/trackbook/helpers/GpxHelper.java @@ -0,0 +1,108 @@ +/** + * GpxHelper.java + * Implements the GpxHelper class + * A GpxHelper can convert Track object into a GPX string + * + * This file is part of + * TRACKBOOK - Movement Recorder for Android + * + * Copyright (c) 2016-17 - Y20K.org + * Licensed under the MIT-License + * http://opensource.org/licenses/MIT + * + * Trackbook uses osmdroid - OpenStreetMap-Tools for Android + * https://github.com/osmdroid/osmdroid + */ + +package org.y20k.trackbook.helpers; + +import android.location.Location; + +import org.y20k.trackbook.core.Track; +import org.y20k.trackbook.core.WayPoint; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * GpxHelper class + */ +public class GpxHelper { + + /* Define log tag */ + private static final String LOG_TAG = GpxHelper.class.getSimpleName(); + + + /* Main class variables */ + private final Track mTrack; + + + /* Constructor */ + public GpxHelper(Track track) { + mTrack = track; + } + + + /* Creates GPX formatted string */ + public String createGpxString() { + String gpxString; + + // add header + gpxString = "\n" + + "\n"; + + // add track + gpxString = gpxString + addTrack(); + + // add closing tag + gpxString = gpxString + "\n"; + + // todo remove + LogHelper.v(LOG_TAG, "GPX output:\n" + gpxString); + + return gpxString; + } + + + /* Creates Track */ + private String addTrack() { + StringBuilder gpxTrack = new StringBuilder(""); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + + // add opening route tag + gpxTrack.append("\t\n"); + + // add route point + for (WayPoint wayPoint:mTrack.getWayPoints()) { + // get location from waypoint + Location location = wayPoint.getLocation(); + + // add longitude and latitude + gpxTrack.append("\t\t\n"); + + // add time + gpxTrack.append("\t\t\t\n"); + + // add altitude + gpxTrack.append("\t\t\t"); + gpxTrack.append(location.getAltitude()); + gpxTrack.append("\n"); + + // add closing tag + gpxTrack.append("\t\t\n"); + } + + // add closing route tag + gpxTrack.append("\t\n"); + + return gpxTrack.toString(); + } + +}