forked from upstream-mirrors/OpenTracks
@@ -0,0 +1,62 @@
|
|||||||
|
package de.dennisguse.opentracks.util;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import de.dennisguse.opentracks.R;
|
||||||
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class PreferencesUtilsTest {
|
||||||
|
|
||||||
|
private final Context context = ApplicationProvider.getApplicationContext();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ExportTrackFileFormat_ok() {
|
||||||
|
// given
|
||||||
|
SharedPreferences.Editor editor = PreferencesUtils.getSharedPreferences(context).edit();
|
||||||
|
editor.putString(context.getString(R.string.export_trackfileformat_key), TrackFileFormat.KMZ_WITH_TRACKDETAIL.name());
|
||||||
|
editor.commit();
|
||||||
|
|
||||||
|
// when
|
||||||
|
TrackFileFormat trackFileFormat = PreferencesUtils.getExportTrackFileFormat(context);
|
||||||
|
|
||||||
|
// then
|
||||||
|
Assert.assertEquals(TrackFileFormat.KMZ_WITH_TRACKDETAIL, trackFileFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ExportTrackFileFormat_invalid() {
|
||||||
|
// given
|
||||||
|
SharedPreferences.Editor editor = PreferencesUtils.getSharedPreferences(context).edit();
|
||||||
|
editor.putString(context.getString(R.string.export_trackfileformat_key), "invalid");
|
||||||
|
editor.commit();
|
||||||
|
|
||||||
|
// when
|
||||||
|
TrackFileFormat trackFileFormat = PreferencesUtils.getExportTrackFileFormat(context);
|
||||||
|
|
||||||
|
// then
|
||||||
|
Assert.assertEquals(TrackFileFormat.KML_ONLY_TRACK, trackFileFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ExportTrackFileFormat_noValue() {
|
||||||
|
// given
|
||||||
|
SharedPreferences.Editor editor = PreferencesUtils.getSharedPreferences(context).edit();
|
||||||
|
editor.clear();
|
||||||
|
editor.commit();
|
||||||
|
|
||||||
|
// when
|
||||||
|
TrackFileFormat trackFileFormat = PreferencesUtils.getExportTrackFileFormat(context);
|
||||||
|
|
||||||
|
// then
|
||||||
|
Assert.assertEquals(TrackFileFormat.KML_ONLY_TRACK, trackFileFormat);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,8 +11,11 @@ import androidx.preference.ListPreference;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceFragmentCompat;
|
import androidx.preference.PreferenceFragmentCompat;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
||||||
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeCyclingCadenceAndSpeedPreference;
|
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeCyclingCadenceAndSpeedPreference;
|
||||||
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeHeartRatePreference;
|
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeHeartRatePreference;
|
||||||
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeSensorPreference;
|
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeSensorPreference;
|
||||||
@@ -89,6 +92,8 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit
|
|||||||
|
|
||||||
setPreferencesFromResource(R.xml.settings, rootKey);
|
setPreferencesFromResource(R.xml.settings, rootKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setExportTrackFileFormatOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -172,5 +177,24 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit
|
|||||||
|
|
||||||
HackUtils.invalidatePreference(statsRatePreferences);
|
HackUtils.invalidatePreference(statsRatePreferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setExportTrackFileFormatOptions() {
|
||||||
|
final TrackFileFormat[] trackFileFormats = {TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES, TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA, TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA, TrackFileFormat.GPX};
|
||||||
|
String[] entries = new String[trackFileFormats.length];
|
||||||
|
String[] entryValues = new String[trackFileFormats.length];
|
||||||
|
|
||||||
|
for (int i = 0; i < entries.length; i++) {
|
||||||
|
TrackFileFormat trackFileFormat = trackFileFormats[i];
|
||||||
|
String trackFileFormatUpperCase = trackFileFormat.getExtension().toUpperCase(Locale.US); //ASCII upper case
|
||||||
|
int photoMessageId = trackFileFormat.includesPhotos() ? R.string.export_with_photos : R.string.export_without_photos;
|
||||||
|
entries[i] = String.format("%s (%s)", trackFileFormatUpperCase, getString(photoMessageId));
|
||||||
|
entryValues[i] = trackFileFormat.name();
|
||||||
|
}
|
||||||
|
|
||||||
|
ListPreference listPreference = findPreference(getString(R.string.export_trackfileformat_key));
|
||||||
|
listPreference.setEntries(entries);
|
||||||
|
listPreference.setEntryValues(entryValues);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,9 +92,10 @@ public class IntentUtils {
|
|||||||
Track track = contentProviderUtils.getTrack(trackId);
|
Track track = contentProviderUtils.getTrack(trackId);
|
||||||
if (track == null) {
|
if (track == null) {
|
||||||
Log.e(TAG, "TrackId " + trackId + " could not be resolved.");
|
Log.e(TAG, "TrackId " + trackId + " could not be resolved.");
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pair<Uri, String> uriAndMime = ShareContentProvider.createURI(new long[]{trackId}, track.getName(), TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES);
|
Pair<Uri, String> uriAndMime = ShareContentProvider.createURI(new long[]{trackId}, track.getName(), PreferencesUtils.getExportTrackFileFormat(context));
|
||||||
uris.add(uriAndMime.first);
|
uris.add(uriAndMime.first);
|
||||||
mime = uriAndMime.second;
|
mime = uriAndMime.second;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities to access preferences stored in {@link SharedPreferences}.
|
* Utilities to access preferences stored in {@link SharedPreferences}.
|
||||||
@@ -320,6 +321,15 @@ public class PreferencesUtils {
|
|||||||
return getInt(context, R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY);
|
return getInt(context, R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static TrackFileFormat getExportTrackFileFormat(Context context) {
|
||||||
|
String trackFileFormatName = getString(context, R.string.export_trackfileformat_key, null);
|
||||||
|
try {
|
||||||
|
return TrackFileFormat.valueOf(trackFileFormatName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return TrackFileFormat.KML_ONLY_TRACK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isRecording(Context context) {
|
public static boolean isRecording(Context context) {
|
||||||
long recordingTrackId = getRecordingTrackId(context);
|
long recordingTrackId = getRecordingTrackId(context);
|
||||||
return isRecording(recordingTrackId);
|
return isRecording(recordingTrackId);
|
||||||
|
|||||||
@@ -220,5 +220,7 @@
|
|||||||
<item>@string/settings_recording_track_name_number_option</item>
|
<item>@string/settings_recording_track_name_number_option</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string name="export_trackfileformat_key" translatable="false">exportTrackFileFormat</string>
|
||||||
|
|
||||||
<string name="settings_recording_key" translatable="false">settingsRecordingKey</string>
|
<string name="settings_recording_key" translatable="false">settingsRecordingKey</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -333,6 +333,7 @@ limitations under the License.
|
|||||||
<string name="settings_show">Show</string>
|
<string name="settings_show">Show</string>
|
||||||
<!-- Settings Advanced -->
|
<!-- Settings Advanced -->
|
||||||
<string name="settings_advanced">Advanced</string>
|
<string name="settings_advanced">Advanced</string>
|
||||||
|
<string name="settings_default_trackfileformat">Export/sharing file format</string>
|
||||||
<!-- Settings Chart -->
|
<!-- Settings Chart -->
|
||||||
<string name="settings_chart_by_distance">By distance</string>
|
<string name="settings_chart_by_distance">By distance</string>
|
||||||
<string name="settings_chart_by_time">By time</string>
|
<string name="settings_chart_by_time">By time</string>
|
||||||
|
|||||||
@@ -143,6 +143,10 @@ limitations under the License.
|
|||||||
android:targetClass="de.dennisguse.opentracks.io.file.exporter.ExportActivity"
|
android:targetClass="de.dennisguse.opentracks.io.file.exporter.ExportActivity"
|
||||||
android:targetPackage="@string/applicationId" />
|
android:targetPackage="@string/applicationId" />
|
||||||
</Preference>
|
</Preference>
|
||||||
|
<ListPreference
|
||||||
|
android:key="@string/export_trackfileformat_key"
|
||||||
|
android:title="@string/settings_default_trackfileformat"
|
||||||
|
app:useSimpleSummaryProvider="true" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory android:title="@string/settings_reset">
|
<PreferenceCategory android:title="@string/settings_reset">
|
||||||
|
|||||||
Reference in New Issue
Block a user