diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
index 2adbc1096..bdaf92f5c 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
@@ -208,7 +208,7 @@ public class ExportImportTest {
// when
// 1. export
- trackExporter.writeTrack(track, context.getContentResolver().openOutputStream(tmpFileUri));
+ trackExporter.writeTrack(List.of(track), context.getContentResolver().openOutputStream(tmpFileUri));
contentProviderUtils.deleteTrack(context, trackId);
// 2. import
@@ -290,7 +290,7 @@ public class ExportImportTest {
TrackExporter trackExporter = TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA.createTrackExporter(context, contentProviderUtils);
// when
- trackExporter.writeTrack(track, context.getContentResolver().openOutputStream(tmpFileUri));
+ trackExporter.writeTrack(List.of(track), context.getContentResolver().openOutputStream(tmpFileUri));
// 2. import
InputStream inputStream = context.getContentResolver().openInputStream(tmpFileUri);
@@ -314,7 +314,7 @@ public class ExportImportTest {
// when
// 1. export
- trackExporter.writeTrack(track, context.getContentResolver().openOutputStream(tmpFileUri));
+ trackExporter.writeTrack(List.of(track), context.getContentResolver().openOutputStream(tmpFileUri));
contentProviderUtils.deleteTrack(context, trackId);
// 2. import
@@ -432,7 +432,7 @@ public class ExportImportTest {
// when
// 1. export
- trackExporter.writeTrack(track, context.getContentResolver().openOutputStream(tmpFileUri));
+ trackExporter.writeTrack(List.of(track), context.getContentResolver().openOutputStream(tmpFileUri));
// 2. import
InputStream inputStream = context.getContentResolver().openInputStream(tmpFileUri);
@@ -457,7 +457,7 @@ public class ExportImportTest {
// when
// 1. export
- trackExporter.writeTrack(track, context.getContentResolver().openOutputStream(tmpFileUri));
+ trackExporter.writeTrack(List.of(track), context.getContentResolver().openOutputStream(tmpFileUri));
contentProviderUtils.deleteTrack(context, trackId);
// then
diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java
index 55887c202..256e9ecfa 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java
@@ -232,7 +232,7 @@ public class GPXTrackImporterTest {
Track importedTrack = contentProviderUtils.getTrack(importTrackId);
TrackExporter trackExporter = TrackFileFormat.GPX.createTrackExporter(context, contentProviderUtils);
- trackExporter.writeTrack(importedTrack, outputStream);
+ trackExporter.writeTrack(List.of(importedTrack), outputStream);
// then
String expected = new BufferedReader(
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 0ce56c984..d91fff9dd 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -349,6 +349,7 @@ limitations under the License.
+
diff --git a/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java b/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java
index 2e67c145b..1405d7a9b 100644
--- a/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java
+++ b/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java
@@ -213,7 +213,7 @@ public class ShareContentProvider extends CustomContentProvider {
PipeDataWriter pipeDataWriter = (output, uri1, mimeType, opts, args) -> {
try (FileOutputStream fileOutputStream = new FileOutputStream(output.getFileDescriptor())) {
// TODO handle failure (i.e., do not export an empty file)
- trackExporter.writeTrack(tracks.toArray(new Track[0]), fileOutputStream);
+ trackExporter.writeTrack(tracks, fileOutputStream);
} catch (IOException e) {
Log.w(TAG, "there occurred an error while sharing a file: " + e);
}
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java b/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java
index eeb5dccbc..2f80c1fe1 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java
@@ -29,6 +29,10 @@ public class TrackFilenameGenerator {
.collect(Collectors.joining(", "));
}
+ public static String format(@NonNull String name, @NonNull TrackFileFormat trackFileFormat) {
+ return FileUtils.sanitizeFileName(name + "." + trackFileFormat.getExtension());
+ }
+
private final String template;
public TrackFilenameGenerator(@NonNull String template) {
@@ -44,7 +48,7 @@ public class TrackFilenameGenerator {
values.put(STARTTIME_TIME_KEY, track.getStartTime().toLocalTime().toString());
values.put(STARTTIME_DATE_KEY, track.getStartTime().toLocalDate().toString());
- return FileUtils.sanitizeFileName(format(template, values)) + "." + trackFileFormat.getExtension();
+ return format(format(template, values), trackFileFormat);
}
private static String format(String template, Map values) {
@@ -77,10 +81,6 @@ public class TrackFilenameGenerator {
return String.format(templateCompiled, valueList.toArray());
}
- public String getTemplate() {
- return template;
- }
-
public boolean isValid() {
try {
getExample();
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java
index 448e54a0f..1053ccebf 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java
@@ -23,8 +23,6 @@ import androidx.annotation.NonNull;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.NumberFormat;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.function.Function;
@@ -87,15 +85,23 @@ public class CSVTrackExporter implements TrackExporter {
}
@Override
- public boolean writeTrack(Track track, @NonNull OutputStream outputStream) {
- return writeTrack(new Track[]{track}, outputStream);
- }
+ public boolean writeTrack(@NonNull List