From 8a358357910febc198565711bd8b5b20d77f6940 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 28 Feb 2021 17:49:32 +0100 Subject: [PATCH] GPX export: re-implemented basic support for multiple tracks. Fixes #614. --- .../io/file/exporter/GPXTrackExporter.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java index 8be9bdd3c..74eec5bcd 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java @@ -34,9 +34,10 @@ import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.util.StringUtils; /** - * Convert {@link Track} incl. {@link Marker} and {@link TrackPoint} to KML. + * Convert {@link Track} incl. {@link Marker} and {@link TrackPoint} to GPX. * NOTE: * * does not export {@link TrackPoint} without a latitude/longitude (not supported by GPX 1.1). + * * cannot export multiple {@link Track}s - all {@link TrackPoint}s are exported as if they would belong to the first track. * * @author Sandor Dornbush * @author Rodrigo Damazio @@ -85,13 +86,21 @@ public class GPXTrackExporter implements TrackExporter { @Override public boolean writeTrack(Track track, @NonNull OutputStream outputStream) { + return writeTrack(new Track[]{track}, outputStream); + } + + @Override + public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) { + Track mainTrack = tracks[0]; try { prepare(outputStream); - writeHeader(track); + writeHeader(mainTrack); - writeMarkers(track); + writeMarkers(mainTrack); - writeLocations(track); + for (Track track : tracks) { + writeLocations(track); + } writeFooter(); close(); @@ -103,11 +112,6 @@ public class GPXTrackExporter implements TrackExporter { } } - @Override - public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) { - throw new UnsupportedOperationException(); - } - private void writeLocations(Track track) throws InterruptedException { boolean wroteTrack = false; boolean wroteSegment = false;