diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/TrackFileFormat.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/TrackFileFormat.java
index 355fbeebe..d37a12b53 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/TrackFileFormat.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/TrackFileFormat.java
@@ -18,25 +18,25 @@ import java.util.Locale;
public enum TrackFileFormat implements Parcelable {
KML {
@Override
- public TrackWriter newTrackWriter(Context context, boolean playTrack) {
- return new KmlTrackWriter(context, playTrack);
+ public TrackWriter newTrackWriter(Context context, boolean multiple, boolean playTrack) {
+ return new KmlTrackWriter(context, multiple, playTrack);
}
},
GPX {
@Override
- public TrackWriter newTrackWriter(Context context, boolean playTrack) {
+ public TrackWriter newTrackWriter(Context context, boolean multiple, boolean playTrack) {
return new GpxTrackWriter(context);
}
},
CSV {
@Override
- public TrackWriter newTrackWriter(Context context, boolean playTrack) {
+ public TrackWriter newTrackWriter(Context context, boolean multiple, boolean playTrack) {
return new CsvTrackWriter(context);
}
},
TCX {
@Override
- public TrackWriter newTrackWriter(Context context, boolean playTrack) {
+ public TrackWriter newTrackWriter(Context context, boolean multiple, boolean playTrack) {
return new TcxTrackWriter(context);
}
};
@@ -65,8 +65,12 @@ public enum TrackFileFormat implements Parcelable {
/**
* Creates a new track writer for the format.
+ *
+ * @param context the context
+ * @param multiple true for writing multiple tracks
+ * @param playTrack true to play track
*/
- public abstract TrackWriter newTrackWriter(Context context, boolean playTrack);
+ public abstract TrackWriter newTrackWriter(Context context, boolean multiple, boolean playTrack);
/**
* Returns the mime type for each format.
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriter.java
index 28ef5f2ec..21d281f7f 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriter.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriter.java
@@ -70,6 +70,7 @@ public class KmlTrackWriter implements TrackWriter {
TRACK_ICON = "http://earth.google.com/images/kml-icons/track-directional/track-0.png";
private final Context context;
+ private final boolean multiple;
private final boolean playTrack;
private final DescriptionGenerator descriptionGenerator;
private final MyTracksProviderUtils myTracksProviderUtils;
@@ -82,13 +83,15 @@ public class KmlTrackWriter implements TrackWriter {
private boolean hasCadence;
private boolean hasHeartRate;
- public KmlTrackWriter(Context context, boolean playTrack) {
- this(context, playTrack, new DescriptionGeneratorImpl(context));
+ public KmlTrackWriter(Context context, boolean multiple, boolean playTrack) {
+ this(context, multiple, playTrack, new DescriptionGeneratorImpl(context));
}
@VisibleForTesting
- KmlTrackWriter(Context context, boolean playTrack, DescriptionGenerator descriptionGenerator) {
+ KmlTrackWriter(Context context, boolean multiple, boolean playTrack,
+ DescriptionGenerator descriptionGenerator) {
this.context = context;
+ this.multiple = multiple;
this.playTrack = playTrack;
this.descriptionGenerator = descriptionGenerator;
this.myTracksProviderUtils = MyTracksProviderUtils.Factory.get(context);
@@ -184,7 +187,7 @@ public class KmlTrackWriter implements TrackWriter {
@Override
public void writeBeginTracks() {
- if (printWriter != null && playTrack) {
+ if (printWriter != null && multiple) {
printWriter.println("");
printWriter.println("" + context.getString(R.string.generic_tracks) + "");
printWriter.println("1");
@@ -193,7 +196,7 @@ public class KmlTrackWriter implements TrackWriter {
@Override
public void writeEndTracks() {
- if (printWriter != null && playTrack) {
+ if (printWriter != null && multiple) {
printWriter.println("");
}
}
@@ -203,7 +206,8 @@ public class KmlTrackWriter implements TrackWriter {
if (printWriter != null) {
String name = context.getString(R.string.marker_label_start, track.getName());
writePlacemark(name, "", "", START_STYLE, startLocation);
- if (playTrack) {
+ if (multiple) {
+ // No need to add TOUR_FEATURE_ID_VALUE
printWriter.println("");
} else {
printWriter.println("");
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/SaveAsyncTask.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/SaveAsyncTask.java
index c8263774f..3abfe12d6 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/SaveAsyncTask.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/exporter/SaveAsyncTask.java
@@ -188,7 +188,8 @@ public class SaveAsyncTask extends AsyncTask {
boolean useKmz = trackFileFormat == TrackFileFormat.KML && !playTrack;
String extension = useKmz ? KmzTrackExporter.KMZ_EXTENSION : trackFileFormat.getExtension();
FileTrackExporter fileTrackExporter = new FileTrackExporter(myTracksProviderUtils, tracks,
- trackFileFormat.newTrackWriter(context, playTrack), new TrackExporterListener() {
+ trackFileFormat.newTrackWriter(context, tracks.length > 1, playTrack),
+ new TrackExporterListener() {
@Override
public void onProgressUpdate(int number, int max) {
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/sync/SyncUtils.java b/MyTracks/src/com/google/android/apps/mytracks/io/sync/SyncUtils.java
index db21c1600..093df12fb 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/sync/SyncUtils.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/sync/SyncUtils.java
@@ -466,8 +466,8 @@ public class SyncUtils {
String extension = useKmz ? KmzTrackExporter.KMZ_EXTENSION : TrackFileFormat.KML.getExtension();
java.io.File file = new java.io.File(
directory, FileUtils.buildUniqueFileName(directory, track.getName(), extension));
- FileTrackExporter fileTrackExporter = new FileTrackExporter(
- myTracksProviderUtils, tracks, TrackFileFormat.KML.newTrackWriter(context, false), null);
+ FileTrackExporter fileTrackExporter = new FileTrackExporter(myTracksProviderUtils, tracks,
+ TrackFileFormat.KML.newTrackWriter(context, false, false), null);
TrackExporter trackExporter = useKmz ? new KmzTrackExporter(
myTracksProviderUtils, fileTrackExporter, tracks, context)
: fileTrackExporter;
diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriterTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriterTest.java
index e73c3d479..bf0ffd9b8 100644
--- a/MyTracksTest/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriterTest.java
+++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/file/exporter/KmlTrackWriterTest.java
@@ -55,7 +55,7 @@ public class KmlTrackWriterTest extends TrackWriterTest {
public void testXmlOutput() throws Exception {
KmlTrackWriter kmlTrackWriter = new KmlTrackWriter(
- getContext(), false, new FakeDescriptionGenerator());
+ getContext(), false, false, new FakeDescriptionGenerator());
String result = writeTrack(kmlTrackWriter);
Document doc = parseXmlDocument(result);