forked from upstream-mirrors/OpenTracks
@@ -15,7 +15,6 @@ import androidx.test.rule.ActivityTestRule;
|
|||||||
import androidx.test.rule.GrantPermissionRule;
|
import androidx.test.rule.GrantPermissionRule;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -27,7 +26,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.*;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.DataField;
|
import de.dennisguse.opentracks.content.data.DataField;
|
||||||
import de.dennisguse.opentracks.content.data.Layout;
|
import de.dennisguse.opentracks.content.data.Layout;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
import org.hamcrest.Description;
|
import org.hamcrest.Description;
|
||||||
import org.hamcrest.Matcher;
|
import org.hamcrest.Matcher;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package de.dennisguse.opentracks;
|
package de.dennisguse.opentracks;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
@@ -9,7 +8,7 @@ import org.junit.rules.TestRule;
|
|||||||
import org.junit.runner.Description;
|
import org.junit.runner.Description;
|
||||||
import org.junit.runners.model.Statement;
|
import org.junit.runners.model.Statement;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
public class PreferenceMetricUnitRule implements TestRule {
|
public class PreferenceMetricUnitRule implements TestRule {
|
||||||
private final Context context;
|
private final Context context;
|
||||||
|
|||||||
+1
-2
@@ -25,7 +25,6 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import android.content.ContentProvider;
|
import android.content.ContentProvider;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
|
||||||
@@ -66,7 +65,7 @@ import de.dennisguse.opentracks.io.file.importer.TrackPointAssert;
|
|||||||
import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
|
import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
|
||||||
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
|
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for the track recording service.
|
* Tests for the track recording service.
|
||||||
|
|||||||
+1
-2
@@ -2,7 +2,6 @@ package de.dennisguse.opentracks.services;
|
|||||||
|
|
||||||
import android.content.ContentProvider;
|
import android.content.ContentProvider;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -36,7 +35,7 @@ import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
|||||||
import de.dennisguse.opentracks.io.file.importer.TrackPointAssert;
|
import de.dennisguse.opentracks.io.file.importer.TrackPointAssert;
|
||||||
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
|
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
|
||||||
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
|||||||
+1
-2
@@ -5,7 +5,6 @@ import static org.mockito.Mockito.times;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
|
||||||
@@ -24,7 +23,7 @@ import java.time.Instant;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.Distance;
|
import de.dennisguse.opentracks.content.data.Distance;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class LocationHandlerTest {
|
public class LocationHandlerTest {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import de.dennisguse.opentracks.R;
|
|||||||
import de.dennisguse.opentracks.content.data.DataField;
|
import de.dennisguse.opentracks.content.data.DataField;
|
||||||
import de.dennisguse.opentracks.content.data.Layout;
|
import de.dennisguse.opentracks.content.data.Layout;
|
||||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package de.dennisguse.opentracks.util;
|
package de.dennisguse.opentracks.util;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
@@ -31,6 +30,7 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.content.data.Track;
|
import de.dennisguse.opentracks.content.data.Track;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
package de.dennisguse.opentracks;
|
package de.dennisguse.opentracks;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.util.ActivityUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Code that is executed when the application starts.
|
* Code that is executed when the application starts.
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import android.app.ActivityOptions;
|
|||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
@@ -64,7 +63,7 @@ import de.dennisguse.opentracks.util.ActivityUtils;
|
|||||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||||
import de.dennisguse.opentracks.util.IntentUtils;
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
import de.dennisguse.opentracks.util.ListItemUtils;
|
import de.dennisguse.opentracks.util.ListItemUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
|||||||
import de.dennisguse.opentracks.settings.SettingsActivity;
|
import de.dennisguse.opentracks.settings.SettingsActivity;
|
||||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||||
import de.dennisguse.opentracks.util.IntentUtils;
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An activity to show the track detail, record a new track or resumes an existing one.
|
* An activity to show the track detail, record a new track or resumes an existing one.
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
|||||||
import de.dennisguse.opentracks.settings.SettingsActivity;
|
import de.dennisguse.opentracks.settings.SettingsActivity;
|
||||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||||
import de.dennisguse.opentracks.util.IntentUtils;
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackUtils;
|
import de.dennisguse.opentracks.util.TrackUtils;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package de.dennisguse.opentracks.adapters;
|
package de.dennisguse.opentracks.adapters;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -11,7 +10,7 @@ import android.widget.ImageView;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
import de.dennisguse.opentracks.viewmodels.AggregatedStatistics;
|
import de.dennisguse.opentracks.viewmodels.AggregatedStatistics;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
import de.dennisguse.opentracks.databinding.ChartBinding;
|
import de.dennisguse.opentracks.databinding.ChartBinding;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A fragment to display track chart to the user.
|
* A fragment to display track chart to the user.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import de.dennisguse.opentracks.adapters.IntervalStatisticsAdapter;
|
|||||||
import de.dennisguse.opentracks.content.data.Track;
|
import de.dennisguse.opentracks.content.data.Track;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.databinding.IntervalListViewBinding;
|
import de.dennisguse.opentracks.databinding.IntervalListViewBinding;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.viewmodels.IntervalStatistics;
|
import de.dennisguse.opentracks.viewmodels.IntervalStatistics;
|
||||||
import de.dennisguse.opentracks.viewmodels.IntervalStatisticsModel;
|
import de.dennisguse.opentracks.viewmodels.IntervalStatisticsModel;
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
|||||||
import de.dennisguse.opentracks.databinding.StatisticsRecordedBinding;
|
import de.dennisguse.opentracks.databinding.StatisticsRecordedBinding;
|
||||||
import de.dennisguse.opentracks.stats.SensorStatistics;
|
import de.dennisguse.opentracks.stats.SensorStatistics;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
import de.dennisguse.opentracks.viewmodels.StatisticData;
|
import de.dennisguse.opentracks.viewmodels.StatisticData;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
import de.dennisguse.opentracks.databinding.StatisticsRecordingBinding;
|
import de.dennisguse.opentracks.databinding.StatisticsRecordingBinding;
|
||||||
import de.dennisguse.opentracks.services.TrackRecordingService;
|
import de.dennisguse.opentracks.services.TrackRecordingService;
|
||||||
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.viewmodels.StatisticData;
|
import de.dennisguse.opentracks.viewmodels.StatisticData;
|
||||||
import de.dennisguse.opentracks.viewmodels.StatisticsDataModel;
|
import de.dennisguse.opentracks.viewmodels.StatisticsDataModel;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ import java.io.OutputStream;
|
|||||||
import de.dennisguse.opentracks.content.data.Track;
|
import de.dennisguse.opentracks.content.data.Track;
|
||||||
import de.dennisguse.opentracks.databinding.TrackSharePictureBinding;
|
import de.dennisguse.opentracks.databinding.TrackSharePictureBinding;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
-2
@@ -2,7 +2,6 @@ package de.dennisguse.opentracks.io.file.importer;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.DocumentsContract;
|
import android.provider.DocumentsContract;
|
||||||
@@ -13,7 +12,7 @@ import androidx.documentfile.provider.DocumentFile;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.io.file.exporter.ExportActivity;
|
import de.dennisguse.opentracks.io.file.exporter.ExportActivity;
|
||||||
import de.dennisguse.opentracks.util.IntentUtils;
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
public abstract class DirectoryChooserActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package de.dennisguse.opentracks.io.file.importer;
|
|||||||
import android.app.job.JobService;
|
import android.app.job.JobService;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.ResultReceiver;
|
import android.os.ResultReceiver;
|
||||||
@@ -22,7 +21,7 @@ import de.dennisguse.opentracks.content.data.Track;
|
|||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
import de.dennisguse.opentracks.util.FileUtils;
|
import de.dennisguse.opentracks.util.FileUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
public class ImportService extends JobIntentService {
|
public class ImportService extends JobIntentService {
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package de.dennisguse.opentracks.services;
|
|||||||
|
|
||||||
import android.content.ContentUris;
|
import android.content.ContentUris;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.database.sqlite.SQLiteException;
|
import android.database.sqlite.SQLiteException;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -20,7 +19,7 @@ import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
|||||||
import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
|
import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
import de.dennisguse.opentracks.util.TrackNameUtils;
|
import de.dennisguse.opentracks.util.TrackNameUtils;
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ import de.dennisguse.opentracks.settings.SettingsActivity;
|
|||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.ExportUtils;
|
import de.dennisguse.opentracks.util.ExportUtils;
|
||||||
import de.dennisguse.opentracks.util.IntentUtils;
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.SystemUtils;
|
import de.dennisguse.opentracks.util.SystemUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package de.dennisguse.opentracks.services.handlers;
|
package de.dennisguse.opentracks.services.handlers;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
|
||||||
@@ -13,7 +12,7 @@ import java.time.Instant;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.Distance;
|
import de.dennisguse.opentracks.content.data.Distance;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class handle GPS status according to received locations` and some thresholds.
|
* This class handle GPS status according to received locations` and some thresholds.
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package de.dennisguse.opentracks.services.handlers;
|
package de.dennisguse.opentracks.services.handlers;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.location.LocationListener;
|
import android.location.LocationListener;
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
@@ -17,7 +16,7 @@ import de.dennisguse.opentracks.R;
|
|||||||
import de.dennisguse.opentracks.content.data.Distance;
|
import de.dennisguse.opentracks.content.data.Distance;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.util.LocationUtils;
|
import de.dennisguse.opentracks.util.LocationUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
||||||
public class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener {
|
public class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package de.dennisguse.opentracks.services.handlers;
|
package de.dennisguse.opentracks.services.handlers;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
@@ -17,7 +16,6 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||||
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
|
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
|
||||||
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates TrackPoints while recording by fusing data from different sensors (e.g., GNSS, barometer, BLE sensors).
|
* Creates TrackPoints while recording by fusing data from different sensors (e.g., GNSS, barometer, BLE sensors).
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ import de.dennisguse.opentracks.content.sensor.SensorDataCycling;
|
|||||||
import de.dennisguse.opentracks.content.sensor.SensorDataRunning;
|
import de.dennisguse.opentracks.content.sensor.SensorDataRunning;
|
||||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||||
import de.dennisguse.opentracks.util.BluetoothUtils;
|
import de.dennisguse.opentracks.util.BluetoothUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bluetooth LE sensor manager: manages connections to Bluetooth LE sensors.
|
* Bluetooth LE sensor manager: manages connections to Bluetooth LE sensors.
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package de.dennisguse.opentracks.services.tasks;
|
package de.dennisguse.opentracks.services.tasks;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.MediaPlayer;
|
import android.media.MediaPlayer;
|
||||||
import android.speech.tts.TextToSpeech;
|
import android.speech.tts.TextToSpeech;
|
||||||
@@ -36,7 +35,7 @@ import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
|||||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.AnnouncementUtils;
|
import de.dennisguse.opentracks.util.AnnouncementUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.viewmodels.IntervalStatistics;
|
import de.dennisguse.opentracks.viewmodels.IntervalStatistics;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package de.dennisguse.opentracks.settings;
|
package de.dennisguse.opentracks.settings;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -31,7 +30,6 @@ import androidx.preference.PreferenceDialogFragmentCompat;
|
|||||||
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.util.HackUtils;
|
import de.dennisguse.opentracks.util.HackUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,155 +0,0 @@
|
|||||||
package de.dennisguse.opentracks.settings;
|
|
||||||
|
|
||||||
import android.content.res.Resources;
|
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
import de.dennisguse.opentracks.util.UnitConversions;
|
|
||||||
|
|
||||||
final class PreferenceHelper {
|
|
||||||
|
|
||||||
static String[] getMinRecordingIntervalEntries(Resources resources) {
|
|
||||||
String[] entryValues = resources.getStringArray(R.array.min_recording_interval_values);
|
|
||||||
String[] entries = new String[entryValues.length];
|
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
|
||||||
|
|
||||||
if (value == PreferencesUtils.getMinRecordingIntervalDefault().getSeconds()) {
|
|
||||||
entries[i] = resources.getString(R.string.value_smallest_recommended);
|
|
||||||
} else {
|
|
||||||
entries[i] = value < 60 ? resources.getString(R.string.value_integer_second, value) : resources.getString(R.string.value_integer_minute, value / 60);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String[] getRecordingDistanceIntervalEntries(Resources resources, boolean metricUnits) {
|
|
||||||
String[] entryValues = resources.getStringArray(R.array.recording_distance_interval_values);
|
|
||||||
String[] entries = new String[entryValues.length];
|
|
||||||
|
|
||||||
final int recordingDistanceIntervalDefault = (int) PreferencesUtils.getRecordingDistanceIntervalDefault().toM();
|
|
||||||
|
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
|
||||||
String displayValue;
|
|
||||||
if (metricUnits) {
|
|
||||||
displayValue = resources.getString(R.string.value_integer_meter, value);
|
|
||||||
if (value == recordingDistanceIntervalDefault) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
|
|
||||||
} else {
|
|
||||||
entries[i] = displayValue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int feet = (int) (value * UnitConversions.M_TO_FT);
|
|
||||||
displayValue = resources.getString(R.string.value_integer_feet, feet);
|
|
||||||
if (value == recordingDistanceIntervalDefault) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet);
|
|
||||||
} else {
|
|
||||||
entries[i] = displayValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String[] getMaxRecordingDistanceEntries(Resources resources, boolean metricUnits) {
|
|
||||||
String[] entryValues = resources.getStringArray(R.array.max_recording_distance_values);
|
|
||||||
String[] entries = new String[entryValues.length];
|
|
||||||
|
|
||||||
final int maxRecordingDistanceDefault = Integer.parseInt(resources.getString(R.string.max_recording_distance_default));
|
|
||||||
|
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
|
||||||
String displayValue;
|
|
||||||
if (metricUnits) {
|
|
||||||
displayValue = resources.getString(R.string.value_integer_meter, value);
|
|
||||||
if (value == maxRecordingDistanceDefault) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
|
|
||||||
} else {
|
|
||||||
entries[i] = displayValue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int feet = (int) (value * UnitConversions.M_TO_FT);
|
|
||||||
displayValue = resources.getString(R.string.value_integer_feet, feet);
|
|
||||||
if (value == maxRecordingDistanceDefault) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet);
|
|
||||||
} else {
|
|
||||||
entries[i] = displayValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String[] getRecordingGpsAccuracyEntries(Resources resources, boolean metricUnits) {
|
|
||||||
String[] entryValues = resources.getStringArray(R.array.recording_gps_accuracy_values);
|
|
||||||
String[] entries = new String[entryValues.length];
|
|
||||||
|
|
||||||
final int recordingGPSAccuracyDefault = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_default));
|
|
||||||
final int recordingGPSAccuracyExcellent = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_excellent));
|
|
||||||
final int recordingGPSAccuracyPoor = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_poor));
|
|
||||||
|
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
|
||||||
String displayValue;
|
|
||||||
if (metricUnits) {
|
|
||||||
displayValue = resources.getString(R.string.value_integer_meter, value);
|
|
||||||
if (value == recordingGPSAccuracyDefault) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
|
|
||||||
} else if (value == recordingGPSAccuracyExcellent) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_meter_excellent_gps, value);
|
|
||||||
} else if (value == recordingGPSAccuracyPoor) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_meter_poor_gps, value);
|
|
||||||
} else {
|
|
||||||
entries[i] = displayValue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int feet = (int) (value * UnitConversions.M_TO_FT);
|
|
||||||
displayValue = resources.getString(R.string.value_integer_feet, feet);
|
|
||||||
|
|
||||||
if (value == recordingGPSAccuracyDefault) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet);
|
|
||||||
} else if (value == recordingGPSAccuracyExcellent) {
|
|
||||||
entries[i] = resources.getString(R.string.value_integer_feet_excellent_gps, feet);
|
|
||||||
} else {
|
|
||||||
entries[i] = displayValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String[] getAnnouncementFrequency(Resources resources) {
|
|
||||||
String[] values = resources.getStringArray(R.array.voice_announcement_frequency_values);
|
|
||||||
String[] options = new String[values.length];
|
|
||||||
for (int i = 0; i < values.length; i++) {
|
|
||||||
if (resources.getString(R.string.announcement_off).equals(values[i])) {
|
|
||||||
options[i] = resources.getString(R.string.value_off);
|
|
||||||
} else {
|
|
||||||
int value = Integer.parseInt(values[i]);
|
|
||||||
options[i] = resources.getString(R.string.value_integer_minute, Duration.ofSeconds(value).toMinutes());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String[] getAnnouncementDistance(Resources resources, boolean metricUnits) {
|
|
||||||
String[] values = resources.getStringArray(R.array.voice_announcement_distance_values);
|
|
||||||
String[] options = new String[values.length];
|
|
||||||
for (int i = 0; i < values.length; i++) {
|
|
||||||
if (resources.getString(R.string.announcement_off).equals(values[i])) {
|
|
||||||
options[i] = resources.getString(R.string.value_off);
|
|
||||||
} else {
|
|
||||||
int value = Integer.parseInt(values[i]);
|
|
||||||
options[i] = resources.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-7
@@ -1,22 +1,19 @@
|
|||||||
package de.dennisguse.opentracks.util;
|
package de.dennisguse.opentracks.settings;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
|
|
||||||
public class PreferencesOpenHelper {
|
class PreferencesOpenHelper {
|
||||||
|
|
||||||
private static final int PREFERENCES_VERSION = 1;
|
private static final int PREFERENCES_VERSION = 1;
|
||||||
|
|
||||||
private PreferencesOpenHelper() {
|
private PreferencesOpenHelper() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PreferencesOpenHelper newInstance() {
|
static PreferencesOpenHelper newInstance() {
|
||||||
return new PreferencesOpenHelper();
|
return new PreferencesOpenHelper();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkForUpgrade() {
|
void checkForUpgrade() {
|
||||||
int lastVersion = PreferencesUtils.getInt(R.string.prefs_last_version_key, 0);
|
int lastVersion = PreferencesUtils.getInt(R.string.prefs_last_version_key, 0);
|
||||||
if (PREFERENCES_VERSION > lastVersion) {
|
if (PREFERENCES_VERSION > lastVersion) {
|
||||||
onUpgrade();
|
onUpgrade();
|
||||||
+157
-8
@@ -14,7 +14,7 @@
|
|||||||
* the License.
|
* the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package de.dennisguse.opentracks.util;
|
package de.dennisguse.opentracks.settings;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -43,6 +43,9 @@ import de.dennisguse.opentracks.content.data.DataField;
|
|||||||
import de.dennisguse.opentracks.content.data.Distance;
|
import de.dennisguse.opentracks.content.data.Distance;
|
||||||
import de.dennisguse.opentracks.content.data.Layout;
|
import de.dennisguse.opentracks.content.data.Layout;
|
||||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
|
import de.dennisguse.opentracks.util.CsvConstants;
|
||||||
|
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||||
|
import de.dennisguse.opentracks.util.UnitConversions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities to access preferences stored in {@link SharedPreferences}.
|
* Utilities to access preferences stored in {@link SharedPreferences}.
|
||||||
@@ -248,6 +251,20 @@ public class PreferencesUtils {
|
|||||||
return Duration.ofSeconds(value);
|
return Duration.ofSeconds(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String[] getVoiceAnnouncementFrequencyEntries() {
|
||||||
|
String[] values = resources.getStringArray(R.array.voice_announcement_frequency_values);
|
||||||
|
String[] options = new String[values.length];
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
if (resources.getString(R.string.announcement_off).equals(values[i])) {
|
||||||
|
options[i] = resources.getString(R.string.value_off);
|
||||||
|
} else {
|
||||||
|
int value = Integer.parseInt(values[i]);
|
||||||
|
options[i] = resources.getString(R.string.value_integer_minute, Duration.ofSeconds(value).toMinutes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Result depends on isMetricUnits
|
* @return Result depends on isMetricUnits
|
||||||
*/
|
*/
|
||||||
@@ -257,6 +274,24 @@ public class PreferencesUtils {
|
|||||||
return Distance.one(isMetricUnits()).multipliedBy(value);
|
return Distance.one(isMetricUnits()).multipliedBy(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Result depends on isMetricUnits
|
||||||
|
*/
|
||||||
|
static String[] getVoiceAnnouncementDistanceEntries() {
|
||||||
|
String[] values = resources.getStringArray(R.array.voice_announcement_distance_values);
|
||||||
|
String[] options = new String[values.length];
|
||||||
|
boolean metricUnits = isMetricUnits();
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
if (resources.getString(R.string.announcement_off).equals(values[i])) {
|
||||||
|
options[i] = resources.getString(R.string.value_off);
|
||||||
|
} else {
|
||||||
|
int value = Integer.parseInt(values[i]);
|
||||||
|
options[i] = resources.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
public static float getVoiceSpeedRate() {
|
public static float getVoiceSpeedRate() {
|
||||||
final float DEFAULT = Float.parseFloat(resources.getString(R.string.voice_speed_rate_default));
|
final float DEFAULT = Float.parseFloat(resources.getString(R.string.voice_speed_rate_default));
|
||||||
return getFloat(R.string.voice_speed_rate_key, DEFAULT);
|
return getFloat(R.string.voice_speed_rate_key, DEFAULT);
|
||||||
@@ -274,31 +309,145 @@ public class PreferencesUtils {
|
|||||||
return Integer.parseInt(resources.getString(R.string.recording_distance_interval_default));
|
return Integer.parseInt(resources.getString(R.string.recording_distance_interval_default));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String[] getRecordingDistanceIntervalEntries() {
|
||||||
|
String[] entryValues = resources.getStringArray(R.array.recording_distance_interval_values);
|
||||||
|
String[] entries = new String[entryValues.length];
|
||||||
|
|
||||||
|
final int recordingDistanceIntervalDefault = (int) getRecordingDistanceIntervalDefault().toM();
|
||||||
|
boolean metricUnits = isMetricUnits();
|
||||||
|
|
||||||
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
|
String displayValue;
|
||||||
|
if (metricUnits) {
|
||||||
|
displayValue = resources.getString(R.string.value_integer_meter, value);
|
||||||
|
if (value == recordingDistanceIntervalDefault) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
|
||||||
|
} else {
|
||||||
|
entries[i] = displayValue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int feet = (int) (value * UnitConversions.M_TO_FT);
|
||||||
|
displayValue = resources.getString(R.string.value_integer_feet, feet);
|
||||||
|
if (value == recordingDistanceIntervalDefault) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet);
|
||||||
|
} else {
|
||||||
|
entries[i] = displayValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
public static Distance getMaxRecordingDistance() {
|
public static Distance getMaxRecordingDistance() {
|
||||||
final int MAX_RECORDING_DISTANCE = Integer.parseInt(resources.getString(R.string.max_recording_distance_default));
|
final int MAX_RECORDING_DISTANCE = Integer.parseInt(resources.getString(R.string.max_recording_distance_default));
|
||||||
return Distance.of(getInt(R.string.max_recording_distance_key, MAX_RECORDING_DISTANCE));
|
return Distance.of(getInt(R.string.max_recording_distance_key, MAX_RECORDING_DISTANCE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String[] getMaxRecordingDistanceEntries() {
|
||||||
|
String[] entryValues = resources.getStringArray(R.array.max_recording_distance_values);
|
||||||
|
String[] entries = new String[entryValues.length];
|
||||||
|
|
||||||
|
final int maxRecordingDistanceDefault = Integer.parseInt(resources.getString(R.string.max_recording_distance_default));
|
||||||
|
boolean metricUnits = isMetricUnits();
|
||||||
|
|
||||||
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
|
String displayValue;
|
||||||
|
if (metricUnits) {
|
||||||
|
displayValue = resources.getString(R.string.value_integer_meter, value);
|
||||||
|
if (value == maxRecordingDistanceDefault) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
|
||||||
|
} else {
|
||||||
|
entries[i] = displayValue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int feet = (int) (value * UnitConversions.M_TO_FT);
|
||||||
|
displayValue = resources.getString(R.string.value_integer_feet, feet);
|
||||||
|
if (value == maxRecordingDistanceDefault) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet);
|
||||||
|
} else {
|
||||||
|
entries[i] = displayValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
public static Duration getMinRecordingInterval() {
|
public static Duration getMinRecordingInterval() {
|
||||||
final Duration MIN_RECORDING_INTERVAL = getMinRecordingIntervalDefault();
|
final Duration MIN_RECORDING_INTERVAL = getMinRecordingIntervalDefault();
|
||||||
Duration interval = Duration.ofSeconds(getInt(R.string.min_recording_interval_key, (int) MIN_RECORDING_INTERVAL.getSeconds()));
|
return Duration.ofSeconds(getInt(R.string.min_recording_interval_key, (int) MIN_RECORDING_INTERVAL.getSeconds()));
|
||||||
|
|
||||||
if (interval.isNegative()) {
|
|
||||||
// Due to removal of adaptive listener policy; used -1, and -2
|
|
||||||
interval = getMinRecordingIntervalDefault();
|
|
||||||
}
|
|
||||||
return interval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Duration getMinRecordingIntervalDefault() {
|
public static Duration getMinRecordingIntervalDefault() {
|
||||||
return Duration.ofSeconds(Integer.parseInt(resources.getString(R.string.min_recording_interval_default)));
|
return Duration.ofSeconds(Integer.parseInt(resources.getString(R.string.min_recording_interval_default)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String[] getMinRecordingIntervalEntries() {
|
||||||
|
String[] entryValues = resources.getStringArray(R.array.min_recording_interval_values);
|
||||||
|
String[] entries = new String[entryValues.length];
|
||||||
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
|
|
||||||
|
if (value == PreferencesUtils.getMinRecordingIntervalDefault().getSeconds()) {
|
||||||
|
entries[i] = resources.getString(R.string.value_smallest_recommended);
|
||||||
|
} else {
|
||||||
|
entries[i] = value < 60 ? resources.getString(R.string.value_integer_second, value) : resources.getString(R.string.value_integer_minute, value / 60);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
public static Distance getThresholdHorizontalAccuracy() {
|
public static Distance getThresholdHorizontalAccuracy() {
|
||||||
final int RECORDING_GPS_ACCURACY = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_default));
|
final int RECORDING_GPS_ACCURACY = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_default));
|
||||||
return Distance.of(getInt(R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY));
|
return Distance.of(getInt(R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String[] getThresholdHorizontalAccuracyEntries() {
|
||||||
|
String[] entryValues = resources.getStringArray(R.array.recording_gps_accuracy_values);
|
||||||
|
String[] entries = new String[entryValues.length];
|
||||||
|
|
||||||
|
final int recordingGPSAccuracyDefault = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_default));
|
||||||
|
final int recordingGPSAccuracyExcellent = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_excellent));
|
||||||
|
final int recordingGPSAccuracyPoor = Integer.parseInt(resources.getString(R.string.recording_gps_accuracy_poor));
|
||||||
|
|
||||||
|
boolean metricUnits = isMetricUnits();
|
||||||
|
|
||||||
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
|
String displayValue;
|
||||||
|
if (metricUnits) {
|
||||||
|
displayValue = resources.getString(R.string.value_integer_meter, value);
|
||||||
|
if (value == recordingGPSAccuracyDefault) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_meter_recommended, value);
|
||||||
|
} else if (value == recordingGPSAccuracyExcellent) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_meter_excellent_gps, value);
|
||||||
|
} else if (value == recordingGPSAccuracyPoor) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_meter_poor_gps, value);
|
||||||
|
} else {
|
||||||
|
entries[i] = displayValue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int feet = (int) (value * UnitConversions.M_TO_FT);
|
||||||
|
displayValue = resources.getString(R.string.value_integer_feet, feet);
|
||||||
|
|
||||||
|
if (value == recordingGPSAccuracyDefault) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_feet_recommended, feet);
|
||||||
|
} else if (value == recordingGPSAccuracyExcellent) {
|
||||||
|
entries[i] = resources.getString(R.string.value_integer_feet_excellent_gps, feet);
|
||||||
|
} else {
|
||||||
|
entries[i] = displayValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static boolean shouldInstantExportAfterWorkout(Context context) {
|
public static boolean shouldInstantExportAfterWorkout(Context context) {
|
||||||
final boolean INSTANT_POST_WORKOUT_EXPORT_DEFAULT = resources.getBoolean(R.bool.post_workout_export_enabled_default);
|
final boolean INSTANT_POST_WORKOUT_EXPORT_DEFAULT = resources.getBoolean(R.bool.post_workout_export_enabled_default);
|
||||||
return getBoolean(R.string.post_workout_export_enabled_key, INSTANT_POST_WORKOUT_EXPORT_DEFAULT) && isDefaultExportDirectoryUri(context);
|
return getBoolean(R.string.post_workout_export_enabled_key, INSTANT_POST_WORKOUT_EXPORT_DEFAULT) && isDefaultExportDirectoryUri(context);
|
||||||
@@ -10,7 +10,6 @@ import androidx.preference.DialogPreference;
|
|||||||
import androidx.preference.PreferenceDialogFragmentCompat;
|
import androidx.preference.PreferenceDialogFragmentCompat;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
|
|
||||||
public class ResetDialogPreference extends DialogPreference {
|
public class ResetDialogPreference extends DialogPreference {
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,8 @@ import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeCyclingPowerPrefer
|
|||||||
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeHeartRatePreference;
|
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeHeartRatePreference;
|
||||||
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeRunningSpeedAndCadencePreference;
|
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeRunningSpeedAndCadencePreference;
|
||||||
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeSensorPreference;
|
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeSensorPreference;
|
||||||
import de.dennisguse.opentracks.util.ActivityUtils;
|
|
||||||
import de.dennisguse.opentracks.util.BluetoothUtils;
|
import de.dennisguse.opentracks.util.BluetoothUtils;
|
||||||
import de.dennisguse.opentracks.util.HackUtils;
|
import de.dennisguse.opentracks.util.HackUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
|
|
||||||
public class SettingsActivity extends AbstractActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, ResetDialogPreference.ResetCallback {
|
public class SettingsActivity extends AbstractActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, ResetDialogPreference.ResetCallback {
|
||||||
@@ -279,22 +277,22 @@ public class SettingsActivity extends AbstractActivity implements ChooseActivity
|
|||||||
boolean metricUnits = PreferencesUtils.isMetricUnits();
|
boolean metricUnits = PreferencesUtils.isMetricUnits();
|
||||||
|
|
||||||
ListPreference voiceFrequency = findPreference(getString(R.string.voice_announcement_frequency_key));
|
ListPreference voiceFrequency = findPreference(getString(R.string.voice_announcement_frequency_key));
|
||||||
voiceFrequency.setEntries(PreferenceHelper.getAnnouncementFrequency(getActivity().getResources()));
|
voiceFrequency.setEntries(PreferencesUtils.getVoiceAnnouncementFrequencyEntries());
|
||||||
|
|
||||||
ListPreference voiceDistance = findPreference(getString(R.string.voice_announcement_distance_key));
|
ListPreference voiceDistance = findPreference(getString(R.string.voice_announcement_distance_key));
|
||||||
voiceDistance.setEntries(PreferenceHelper.getAnnouncementDistance(getActivity().getResources(), metricUnits));
|
voiceDistance.setEntries(PreferencesUtils.getVoiceAnnouncementDistanceEntries());
|
||||||
|
|
||||||
ListPreference minRecordingInterval = findPreference(getString(R.string.min_recording_interval_key));
|
ListPreference minRecordingInterval = findPreference(getString(R.string.min_recording_interval_key));
|
||||||
minRecordingInterval.setEntries(PreferenceHelper.getMinRecordingIntervalEntries(getActivity().getResources()));
|
minRecordingInterval.setEntries(PreferencesUtils.getMinRecordingIntervalEntries());
|
||||||
|
|
||||||
ListPreference recordingDistanceInterval = findPreference(getString(R.string.recording_distance_interval_key));
|
ListPreference recordingDistanceInterval = findPreference(getString(R.string.recording_distance_interval_key));
|
||||||
recordingDistanceInterval.setEntries(PreferenceHelper.getRecordingDistanceIntervalEntries(getActivity().getResources(), metricUnits));
|
recordingDistanceInterval.setEntries(PreferencesUtils.getRecordingDistanceIntervalEntries());
|
||||||
|
|
||||||
ListPreference maxRecordingDistance = findPreference(getString(R.string.max_recording_distance_key));
|
ListPreference maxRecordingDistance = findPreference(getString(R.string.max_recording_distance_key));
|
||||||
maxRecordingDistance.setEntries(PreferenceHelper.getMaxRecordingDistanceEntries(getActivity().getResources(), metricUnits));
|
maxRecordingDistance.setEntries(PreferencesUtils.getMaxRecordingDistanceEntries());
|
||||||
|
|
||||||
ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key));
|
ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key));
|
||||||
recordingGpsAccuracy.setEntries(PreferenceHelper.getRecordingGpsAccuracyEntries(getActivity().getResources(), metricUnits));
|
recordingGpsAccuracy.setEntries(PreferencesUtils.getThresholdHorizontalAccuracyEntries());
|
||||||
|
|
||||||
ListPreference statsRatePreferences = findPreference(getString(R.string.stats_rate_key));
|
ListPreference statsRatePreferences = findPreference(getString(R.string.stats_rate_key));
|
||||||
String[] entries = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options);
|
String[] entries = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package de.dennisguse.opentracks.settings;
|
package de.dennisguse.opentracks.settings;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
@@ -23,7 +22,6 @@ import de.dennisguse.opentracks.adapters.SettingsCustomLayoutAdapter;
|
|||||||
import de.dennisguse.opentracks.content.data.Layout;
|
import de.dennisguse.opentracks.content.data.Layout;
|
||||||
import de.dennisguse.opentracks.content.data.DataField;
|
import de.dennisguse.opentracks.content.data.DataField;
|
||||||
import de.dennisguse.opentracks.databinding.ActivitySettingsCustomLayoutBinding;
|
import de.dennisguse.opentracks.databinding.ActivitySettingsCustomLayoutBinding;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
|
||||||
import de.dennisguse.opentracks.util.StatisticsUtils;
|
import de.dennisguse.opentracks.util.StatisticsUtils;
|
||||||
|
|
||||||
public class SettingsCustomLayoutActivity extends AbstractActivity implements SettingsCustomLayoutAdapter.SettingsCustomLayoutItemClickListener {
|
public class SettingsCustomLayoutActivity extends AbstractActivity implements SettingsCustomLayoutAdapter.SettingsCustomLayoutItemClickListener {
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
|||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.settings.BluetoothLeAdapter;
|
import de.dennisguse.opentracks.settings.BluetoothLeAdapter;
|
||||||
import de.dennisguse.opentracks.util.BluetoothUtils;
|
import de.dennisguse.opentracks.util.BluetoothUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preference to select a discoverable Bluetooth LE device.
|
* Preference to select a discoverable Bluetooth LE device.
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package de.dennisguse.opentracks.util;
|
|||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.provider.DocumentsContract;
|
import android.provider.DocumentsContract;
|
||||||
@@ -23,6 +22,7 @@ import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
|||||||
import de.dennisguse.opentracks.io.file.exporter.ExportService;
|
import de.dennisguse.opentracks.io.file.exporter.ExportService;
|
||||||
import de.dennisguse.opentracks.io.file.exporter.ExportServiceResultReceiver;
|
import de.dennisguse.opentracks.io.file.exporter.ExportServiceResultReceiver;
|
||||||
import de.dennisguse.opentracks.io.file.exporter.TrackExporter;
|
import de.dennisguse.opentracks.io.file.exporter.TrackExporter;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
public class ExportUtils {
|
public class ExportUtils {
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package de.dennisguse.opentracks.util;
|
|||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -17,6 +16,7 @@ import de.dennisguse.opentracks.content.data.Track;
|
|||||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an {@link Intent} to request showing a Dashboard.
|
* Create an {@link Intent} to request showing a Dashboard.
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import de.dennisguse.opentracks.content.data.Track;
|
|||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.provider.ShareContentProvider;
|
import de.dennisguse.opentracks.content.provider.ShareContentProvider;
|
||||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities for creating intents.
|
* Utilities for creating intents.
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.content.data.Layout;
|
import de.dennisguse.opentracks.content.data.Layout;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
public class StatisticsUtils {
|
public class StatisticsUtils {
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.content.data.Track;
|
import de.dennisguse.opentracks.content.data.Track;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities for track name.
|
* Utilities for track name.
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This model is used to load intervals for a track.
|
* This model is used to load intervals for a track.
|
||||||
|
|||||||
Reference in New Issue
Block a user