diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java
index 5b8fd912f..7e27dd52d 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java
@@ -139,7 +139,8 @@ public class TrackRecordingServiceTestLooper {
@MediumTest
@Test
public void testWithProperties_minRecordingDistanceDefault() throws TimeoutException {
- PreferencesUtils.setInt(context, R.string.recording_distance_interval_key, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
+ int minRecordingIntervalDefault = Integer.parseInt(context.getResources().getString(R.string.min_recording_interval_default));
+ PreferencesUtils.setInt(context, R.string.recording_distance_interval_key, minRecordingIntervalDefault);
fullRecordingSession();
}
@@ -202,7 +203,8 @@ public class TrackRecordingServiceTestLooper {
@MediumTest
@Test
public void testWithProperties_minRequiredAccuracyDefault() throws TimeoutException {
- PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key, PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT);
+ int recordingGPSAccuracyDefault = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default));
+ PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key, recordingGPSAccuracyDefault);
fullRecordingSession();
}
diff --git a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java
index 0a7c6a1b1..dbe3a705c 100644
--- a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java
@@ -69,7 +69,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
private SharedPreferences sharedPreferences;
private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
- private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT;
+ private boolean recordingTrackPaused;
/*
* Note that sharedPreferenceChangeListener cannot be an anonymous inner
* class. Anonymous inner class will get garbage collected.
@@ -128,6 +128,8 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ recordingTrackPaused = PreferencesUtils.isRecordingTrackPausedDefault(this);
+
contentProviderUtils = ContentProviderUtils.Factory.get(this);
sharedPreferences = PreferencesUtils.getSharedPreferences(this);
diff --git a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java
index a9ab0f3cb..3b3f36761 100644
--- a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java
@@ -101,7 +101,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
- private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT;
+ private boolean recordingTrackPaused;
// Callback when an item is selected in the contextual action mode
private ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() {
@@ -168,6 +168,8 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
super.onCreate(savedInstanceState);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
+ recordingTrackPaused = PreferencesUtils.isRecordingTrackPausedDefault(this);
+
contentProviderUtils = ContentProviderUtils.Factory.get(this);
sharedPreferences = PreferencesUtils.getSharedPreferences(this);
trackRecordingServiceConnection = new TrackRecordingServiceConnection(this, null);
diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java
index 5018f85fe..301d69a04 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java
@@ -93,7 +93,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
// Preferences
private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
- private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT;
+ private boolean recordingTrackPaused;
private final Runnable bindChangedCallback = new Runnable() {
@Override
@@ -182,6 +182,8 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ recordingTrackPaused = PreferencesUtils.isRecordingTrackPausedDefault(this);
+
hasCamera = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
photoUri = savedInstanceState != null ? (Uri) savedInstanceState.getParcelable(PHOTO_URI_KEY) : null;
hasPhoto = savedInstanceState != null && savedInstanceState.getBoolean(HAS_PHOTO_KEY, false);
diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
index 3dffb4253..306e38100 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
@@ -125,7 +125,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
}
};
- private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT;
+ private boolean recordingTrackPaused;
/*
* Note that sharedPreferenceChangeListener cannot be an anonymous inner class.
@@ -225,8 +225,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
// Not recording -> Recording
updateMenuItems(false, true);
startRecording();
- } else {
- if (recordingTrackPaused) {
+ } else if (recordingTrackPaused) {
// Paused -> Resume
updateMenuItems(false, true);
trackRecordingServiceConnection.resumeTrack();
@@ -237,7 +236,6 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
trackRecordingServiceConnection.pauseTrack();
trackController.update(true, true);
}
- }
}
};
@@ -245,6 +243,8 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ recordingTrackPaused = PreferencesUtils.isRecordingTrackPausedDefault(this);
+
contentProviderUtils = ContentProviderUtils.Factory.get(this);
sharedPreferences = PreferencesUtils.getSharedPreferences(this);
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java
index 1ce924111..3da85deb1 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java
@@ -68,7 +68,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
private boolean metricUnits = true;
private boolean reportSpeed = true;
- private int recordingDistanceInterval = PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT;
+ private int recordingDistanceInterval;
// Modes of operation
private boolean chartByDistance = true;
@@ -99,6 +99,8 @@ public class ChartFragment extends Fragment implements TrackDataListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ recordingDistanceInterval = PreferencesUtils.getRecordingDistanceIntervalDefault(getContext());
+
/*
* Create a chartView here to store data thus won't need to reload all the data on every onStart or onResume.
*/
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java
index 7945a2ee7..bd84df30b 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java
@@ -45,7 +45,6 @@ import de.dennisguse.opentracks.services.ITrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.stats.TripStatistics;
import de.dennisguse.opentracks.util.LocationUtils;
-import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.StatsUtils;
import de.dennisguse.opentracks.util.TrackIconUtils;
import de.dennisguse.opentracks.util.UnitConversions;
@@ -81,7 +80,7 @@ public class StatsFragment extends Fragment implements TrackDataListener {
}
};
private String category = "";
- private int recordingGpsAccuracy = PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT;
+ private int recordingGpsAccuracy;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -91,6 +90,9 @@ public class StatsFragment extends Fragment implements TrackDataListener {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
+
+ recordingGpsAccuracy = Integer.parseInt(getContext().getResources().getString(R.string.recording_gps_accuracy_default));
+
handlerUpdateUI = new Handler();
Spinner activityTypeIcon = getView().findViewById(R.id.stats_activity_type_icon);
diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java
index 1e65dc29a..24292ee86 100644
--- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java
+++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java
@@ -139,17 +139,14 @@ public class TrackRecordingService extends Service {
}
if (PreferencesUtils.isKey(context, R.string.min_recording_interval_key, key)) {
int minRecordingInterval = PreferencesUtils.getMinRecordingInterval(context);
- switch (minRecordingInterval) {
- case PreferencesUtils.MIN_RECORDING_INTERVAL_ADAPT_BATTERY_LIFE:
- // Choose battery life over moving time accuracy.
- locationListenerPolicy = new AdaptiveLocationListenerPolicy(30 * UnitConversions.ONE_SECOND, 5 * ONE_MINUTE, 5);
- break;
- case PreferencesUtils.MIN_RECORDING_INTERVAL_ADAPT_ACCURACY:
- // Get all the updates.
- locationListenerPolicy = new AdaptiveLocationListenerPolicy(UnitConversions.ONE_SECOND, 30 * UnitConversions.ONE_SECOND, 0);
- break;
- default:
- locationListenerPolicy = new AbsoluteLocationListenerPolicy(minRecordingInterval * UnitConversions.ONE_SECOND);
+ if (minRecordingInterval == PreferencesUtils.getMinRecordingIntervalAdaptBatteryLife(context)) {
+ // Choose battery life over moving time accuracy.
+ locationListenerPolicy = new AdaptiveLocationListenerPolicy(30 * UnitConversions.ONE_SECOND, 5 * ONE_MINUTE, 5);
+ } else if (minRecordingInterval == PreferencesUtils.getMinRecordingIntervalAdaptAccuracy(context)) {
+ // Get all the updates.
+ locationListenerPolicy = new AdaptiveLocationListenerPolicy(UnitConversions.ONE_SECOND, 30 * UnitConversions.ONE_SECOND, 0);
+ } else {
+ locationListenerPolicy = new AbsoluteLocationListenerPolicy(minRecordingInterval * UnitConversions.ONE_SECOND);
}
}
if (PreferencesUtils.isKey(context, R.string.recording_distance_interval_key, key)) {
diff --git a/src/main/java/de/dennisguse/opentracks/services/tasks/PeriodicTaskExecutor.java b/src/main/java/de/dennisguse/opentracks/services/tasks/PeriodicTaskExecutor.java
index 33ae873c1..6ae933412 100644
--- a/src/main/java/de/dennisguse/opentracks/services/tasks/PeriodicTaskExecutor.java
+++ b/src/main/java/de/dennisguse/opentracks/services/tasks/PeriodicTaskExecutor.java
@@ -17,9 +17,9 @@ package de.dennisguse.opentracks.services.tasks;
import android.util.Log;
+import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.stats.TripStatistics;
-import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.UnitConversions;
/**
@@ -35,13 +35,14 @@ public class PeriodicTaskExecutor {
private final TrackRecordingService trackRecordingService;
private final PeriodicTaskFactory periodicTaskFactory;
+ private final int TASK_FREQUENCY_OFF;
/**
* The task frequency.
* A positive value is a time frequency (minutes).
* A negative value is a distance frequency (km or mi).
* A zero value is to turn off periodic task.
*/
- private int taskFrequency = PreferencesUtils.FREQUENCY_OFF;
+ private int taskFrequency;
private PeriodicTask periodicTask;
@@ -56,6 +57,9 @@ public class PeriodicTaskExecutor {
public PeriodicTaskExecutor(TrackRecordingService trackRecordingService, PeriodicTaskFactory periodicTaskFactory) {
this.trackRecordingService = trackRecordingService;
this.periodicTaskFactory = periodicTaskFactory;
+
+ TASK_FREQUENCY_OFF = Integer.parseInt(trackRecordingService.getBaseContext().getResources().getString(R.string.frequency_off));
+ taskFrequency = TASK_FREQUENCY_OFF;
}
/**
@@ -71,7 +75,7 @@ public class PeriodicTaskExecutor {
timerTaskExecutor.shutdown();
timerTaskExecutor = null;
}
- if (taskFrequency == PreferencesUtils.FREQUENCY_OFF) {
+ if (taskFrequency == TASK_FREQUENCY_OFF) {
Log.d(TAG, "Task frequency is off.");
return;
}
diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java b/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java
index 82d769aa3..c587a7665 100644
--- a/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java
+++ b/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java
@@ -15,167 +15,157 @@ import de.dennisguse.opentracks.util.UnitConversions;
final class PreferenceHelper {
- /**
- * Sets the min recording interval options.
- *
- * @param options the options
- * @param values the values
- */
- static void setMinRecordingIntervalOptions(Context context, String[] options, String[] values) {
- for (int i = 0; i < values.length; i++) {
- int value = Integer.parseInt(values[i]);
- switch (value) {
- case PreferencesUtils.MIN_RECORDING_INTERVAL_ADAPT_BATTERY_LIFE:
- options[i] = context.getString(R.string.value_adapt_battery_life);
- break;
- case PreferencesUtils.MIN_RECORDING_INTERVAL_ADAPT_ACCURACY:
- options[i] = context.getString(R.string.value_adapt_accuracy);
- break;
- case PreferencesUtils.MIN_RECORDING_INTERVAL_DEFAULT:
- options[i] = context.getString(R.string.value_smallest_recommended);
- break;
- default:
- options[i] = value < 60 ? context.getString(R.string.value_integer_second, value) : context.getString(R.string.value_integer_minute, value / 60);
+ static String[] getMinRecordingIntervalEntries(Context context) {
+ String[] entryValues = context.getResources().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.getMinRecordingIntervalAdaptAccuracy(context)) {
+ entries[i] = context.getString(R.string.value_adapt_accuracy);
+ } else if (value == PreferencesUtils.getMinRecordingIntervalAdaptBatteryLife(context)) {
+ entries[i] = context.getString(R.string.value_adapt_battery_life);
+ } else if (value == PreferencesUtils.getMinRecordingIntervalDefault(context)) {
+ entries[i] = context.getString(R.string.value_smallest_recommended);
+ } else {
+ entries[i] = value < 60 ? context.getString(R.string.value_integer_second, value) : context.getString(R.string.value_integer_minute, value / 60);
}
}
+
+ return entries;
}
- /**
- * Sets the recording distance interval options.
- *
- * @param options the options
- * @param values the values
- * @param metricUnits true for metric units
- */
- static void setRecordingDistanceIntervalOptions(Context context, String[] options, String[] values, boolean metricUnits) {
- for (int i = 0; i < values.length; i++) {
- int value = Integer.parseInt(values[i]);
+ static String[] getRecordingDistanceIntervalEntries(Context context, boolean metricUnits) {
+ String[] entryValues = context.getResources().getStringArray(R.array.recording_distance_interval_values);
+ String[] entries = new String[entryValues.length];
+
+ final int recordingDistanceIntervalDefault = PreferencesUtils.getRecordingDistanceIntervalDefault(context);
+
+ for (int i = 0; i < entryValues.length; i++) {
+ int value = Integer.parseInt(entryValues[i]);
String displayValue;
if (metricUnits) {
displayValue = context.getString(R.string.value_integer_meter, value);
- if (value == PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT) {
- options[i] = context.getString(R.string.value_integer_meter_recommended, value);
+ if (value == recordingDistanceIntervalDefault) {
+ entries[i] = context.getString(R.string.value_integer_meter_recommended, value);
} else {
- options[i] = displayValue;
+ entries[i] = displayValue;
}
} else {
int feet = (int) (value * UnitConversions.M_TO_FT);
displayValue = context.getString(R.string.value_integer_feet, feet);
- if (value == PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT) {
- options[i] = context.getString(R.string.value_integer_feet_recommended, feet);
+ if (value == recordingDistanceIntervalDefault) {
+ entries[i] = context.getString(R.string.value_integer_feet_recommended, feet);
} else {
- options[i] = displayValue;
+ entries[i] = displayValue;
}
}
}
+
+ return entries;
}
- /**
- * Sets the max recording distance options.
- *
- * @param options the options
- * @param values the values
- * @param metricUnits true for metric units
- */
- static void setMaxRecordingDistanceOptions(Context context, String[] options, String[] values, boolean metricUnits) {
- for (int i = 0; i < values.length; i++) {
- int value = Integer.parseInt(values[i]);
+ static String[] getMaxRecordingDistanceEntries(Context context, boolean metricUnits) {
+ String[] entryValues = context.getResources().getStringArray(R.array.max_recording_distance_values);
+ String[] entries = new String[entryValues.length];
+
+ final int maxRecordingDistanceDefault = Integer.parseInt(context.getResources().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 = context.getString(R.string.value_integer_meter, value);
- if (value == PreferencesUtils.MAX_RECORDING_DISTANCE_DEFAULT) {
- options[i] = context.getString(R.string.value_integer_meter_recommended, value);
+ if (value == maxRecordingDistanceDefault) {
+ entries[i] = context.getString(R.string.value_integer_meter_recommended, value);
} else {
- options[i] = displayValue;
+ entries[i] = displayValue;
}
} else {
int feet = (int) (value * UnitConversions.M_TO_FT);
if (feet < 2000) {
displayValue = context.getString(R.string.value_integer_feet, feet);
- if (value == PreferencesUtils.MAX_RECORDING_DISTANCE_DEFAULT) {
- options[i] = context.getString(R.string.value_integer_feet_recommended, feet);
+ if (value == maxRecordingDistanceDefault) {
+ entries[i] = context.getString(R.string.value_integer_feet_recommended, feet);
} else {
- options[i] = displayValue;
+ entries[i] = displayValue;
}
} else {
double mile = feet * UnitConversions.FT_TO_MI;
displayValue = context.getString(R.string.value_float_mile, mile);
- options[i] = displayValue;
+ entries[i] = displayValue;
}
}
}
+
+ return entries;
}
- /**
- * Sets the recording gps accuracy options.
- *
- * @param options the options
- * @param values the values
- * @param metricUnits true for metric units
- */
- static void setRecordingGpsAccuracyOptions(Context context, String[] options, String[] values, boolean metricUnits) {
- for (int i = 0; i < values.length; i++) {
- int value = Integer.parseInt(values[i]);
+ static String[] getRecordingGpsAccuracyEntries(Context context, boolean metricUnits) {
+ String[] entryValues = context.getResources().getStringArray(R.array.recording_gps_accuracy_values);
+ String[] entries = new String[entryValues.length];
+
+ final int recordingGPSAccuracyDefault = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default));
+ final int recordingGPSAccuracyExcellent = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_excellent));
+ final int recordingGPSAccuracyPoor = Integer.parseInt(context.getResources().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 = context.getString(R.string.value_integer_meter, value);
- switch (value) {
- case PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT:
- options[i] = context.getString(R.string.value_integer_meter_recommended, value);
- break;
- case PreferencesUtils.RECORDING_GPS_ACCURACY_EXCELLENT:
- options[i] = context.getString(R.string.value_integer_meter_excellent_gps, value);
- break;
- case PreferencesUtils.RECORDING_GPS_ACCURACY_POOR:
- options[i] = context.getString(R.string.value_integer_meter_poor_gps, value);
- break;
- default:
- options[i] = displayValue;
+ if (value == recordingGPSAccuracyDefault) {
+ entries[i] = context.getString(R.string.value_integer_meter_recommended, value);
+ } else if (value == recordingGPSAccuracyExcellent) {
+ entries[i] = context.getString(R.string.value_integer_meter_excellent_gps, value);
+ } else if (value == recordingGPSAccuracyPoor) {
+ entries[i] = context.getString(R.string.value_integer_meter_poor_gps, value);
+ } else {
+ entries[i] = displayValue;
}
} else {
int feet = (int) (value * UnitConversions.M_TO_FT);
if (feet < 2000) {
displayValue = context.getString(R.string.value_integer_feet, feet);
- switch (value) {
- case PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT:
- options[i] = context.getString(R.string.value_integer_feet_recommended, feet);
- break;
- case PreferencesUtils.RECORDING_GPS_ACCURACY_EXCELLENT:
- options[i] = context.getString(R.string.value_integer_feet_excellent_gps, feet);
- break;
- default:
- options[i] = displayValue;
+
+ if (value == recordingGPSAccuracyDefault) {
+ entries[i] = context.getString(R.string.value_integer_feet_recommended, feet);
+ } else if (value == recordingGPSAccuracyExcellent) {
+ entries[i] = context.getString(R.string.value_integer_feet_excellent_gps, feet);
+ } else {
+ entries[i] = displayValue;
}
} else {
double mile = feet * UnitConversions.FT_TO_MI;
displayValue = context.getString(R.string.value_float_mile, mile);
- if (value == PreferencesUtils.RECORDING_GPS_ACCURACY_POOR) {
- options[i] = context.getString(R.string.value_float_mile_poor_gps, mile);
+ if (value == recordingGPSAccuracyPoor) {
+ entries[i] = context.getString(R.string.value_float_mile_poor_gps, mile);
} else {
- options[i] = displayValue;
+ entries[i] = displayValue;
}
}
}
}
+
+ return entries;
}
- /**
- * Sets the auto resume track timeout options.
- *
- * @param options the options
- * @param values the values
- */
- static void setAutoResumeTrackTimeoutOptions(Context context, String[] options, String[] values) {
- for (int i = 0; i < values.length; i++) {
- int value = Integer.parseInt(values[i]);
+ static String[] getAutoResumeTrackTimeoutEntries(Context context) {
+ String[] entryValues = context.getResources().getStringArray(R.array.auto_resume_track_timeout_values);
+ String[] entries = new String[entryValues.length];
+
+ for (int i = 0; i < entryValues.length; i++) {
+ int value = Integer.parseInt(entryValues[i]);
if (value == Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_never))) {
- options[i] = context.getString(R.string.value_never);
+ entries[i] = context.getString(R.string.value_never);
} else if (value == Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_always))) {
- options[i] = context.getString(R.string.value_always);
+ entries[i] = context.getString(R.string.value_always);
} else {
- options[i] = context.getString(R.string.value_integer_minute, value);
+ entries[i] = context.getString(R.string.value_integer_minute, value);
}
}
+
+ return entries;
}
/**
diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
index 659f82980..c042dec89 100644
--- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
@@ -102,40 +102,6 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit
PreferencesUtils.getSharedPreferences(getActivity()).unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
- private void configFrequencyPreference(int key, boolean metricUnits) {
- ListPreference preference = findPreference(getString(key));
-
- String[] options = StringUtils.getFrequencyOptions(getActivity(), metricUnits);
- preference.setEntries(options);
- }
-
- private void configListPreference(int key, int valueArray, boolean metricUnits) {
- String[] values = getResources().getStringArray(valueArray);
- final String[] options = new String[values.length];
- switch (key) {
- case R.string.min_recording_interval_key:
- PreferenceHelper.setMinRecordingIntervalOptions(getActivity(), options, values);
- break;
- case R.string.recording_distance_interval_key:
- PreferenceHelper.setRecordingDistanceIntervalOptions(getActivity(), options, values, metricUnits);
- break;
- case R.string.max_recording_distance_key:
- PreferenceHelper.setMaxRecordingDistanceOptions(getActivity(), options, values, metricUnits);
- break;
- case R.string.recording_gps_accuracy_key:
- PreferenceHelper.setRecordingGpsAccuracyOptions(getActivity(), options, values, metricUnits);
- break;
- case R.string.auto_resume_track_timeout_key:
- PreferenceHelper.setAutoResumeTrackTimeoutOptions(getActivity(), options, values);
- break;
- default:
- return;
- }
-
- final ListPreference listPreference = findPreference(getString(key));
- listPreference.setEntries(options);
- }
-
@Override
public void onDisplayPreferenceDialog(Preference preference) {
DialogFragment dialogFragment = null;
@@ -177,19 +143,30 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit
private void updateUnits() {
boolean metricUnits = PreferencesUtils.isMetricUnits(getActivity());
- //TODO Refactor this!
- configFrequencyPreference(R.string.voice_frequency_key, metricUnits);
- configFrequencyPreference(R.string.split_frequency_key, metricUnits);
- configListPreference(R.string.min_recording_interval_key, R.array.min_recording_interval_values, metricUnits);
- configListPreference(R.string.recording_distance_interval_key, R.array.recording_distance_interval_values, metricUnits);
- configListPreference(R.string.max_recording_distance_key, R.array.max_recording_distance_values, metricUnits);
- configListPreference(R.string.recording_gps_accuracy_key, R.array.recording_gps_accuracy_values, metricUnits);
- configListPreference(R.string.auto_resume_track_timeout_key, R.array.auto_resume_track_timeout_values, metricUnits);
- configListPreference(R.string.auto_resume_track_timeout_key, R.array.auto_resume_track_timeout_values, metricUnits);
+ ListPreference voiceFrequency = findPreference(getString(R.string.voice_frequency_key));
+ voiceFrequency.setEntries(StringUtils.getFrequencyOptions(getActivity(), metricUnits));
- final ListPreference statsRatePreferences = findPreference(getString(R.string.stats_rate_key));
- String[] options = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options);
- statsRatePreferences.setEntries(options);
+ ListPreference splitFrequency = findPreference(getString(R.string.split_frequency_key));
+ splitFrequency.setEntries(StringUtils.getFrequencyOptions(getActivity(), metricUnits));
+
+ ListPreference minRecordingInterval = findPreference(getString(R.string.min_recording_interval_key));
+ minRecordingInterval.setEntries(PreferenceHelper.getMinRecordingIntervalEntries(getActivity()));
+
+ ListPreference recordingDistanceInterval = findPreference(getString(R.string.recording_distance_interval_key));
+ recordingDistanceInterval.setEntries(PreferenceHelper.getRecordingDistanceIntervalEntries(getActivity(), metricUnits));
+
+ ListPreference maxRecordingDistance = findPreference(getString(R.string.max_recording_distance_key));
+ maxRecordingDistance.setEntries(PreferenceHelper.getMaxRecordingDistanceEntries(getActivity(), metricUnits));
+
+ ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key));
+ recordingGpsAccuracy.setEntries(PreferenceHelper.getRecordingGpsAccuracyEntries(getActivity(), metricUnits));
+
+ ListPreference autoresumeTrack = findPreference(getString(R.string.auto_resume_track_timeout_key));
+ autoresumeTrack.setEntries(PreferenceHelper.getAutoResumeTrackTimeoutEntries(getActivity()));
+
+ 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);
+ statsRatePreferences.setEntries(entries);
HackUtils.invalidatePreference(statsRatePreferences);
}
diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java
index 018ab82a2..af9f20bd3 100644
--- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java
@@ -32,41 +32,8 @@ import de.dennisguse.opentracks.R;
*/
public class PreferencesUtils {
- /*
- * Preferences values.
- * The defaults need to match the defaults in the xml files.
- */
- @Deprecated
- public static final boolean RECORDING_TRACK_PAUSED_DEFAULT = true;
-
public static final String BLUETOOTH_SENSOR_DEFAULT = "";
- // Value for split_frequency_key and voice_frequency_key
- @Deprecated
- public static final int FREQUENCY_OFF = 0;
-
- @Deprecated
- public static final int MAX_RECORDING_DISTANCE_DEFAULT = 200;
-
- // Values for min_recording_interval_key
- @Deprecated
- public static final int MIN_RECORDING_INTERVAL_ADAPT_ACCURACY = -1;
- @Deprecated
- public static final int MIN_RECORDING_INTERVAL_ADAPT_BATTERY_LIFE = -2;
- @Deprecated
- public static final int MIN_RECORDING_INTERVAL_DEFAULT = 0;
-
- @Deprecated
- public static final int RECORDING_DISTANCE_INTERVAL_DEFAULT = 10;
-
- // Values for recording_gps_accuracy
- @Deprecated
- public static final int RECORDING_GPS_ACCURACY_DEFAULT = 50;
- @Deprecated
- public static final int RECORDING_GPS_ACCURACY_EXCELLENT = 10;
- @Deprecated
- public static final int RECORDING_GPS_ACCURACY_POOR = 2000;
-
private PreferencesUtils() {
}
@@ -271,8 +238,11 @@ public class PreferencesUtils {
}
public static boolean isRecordingTrackPaused(Context context) {
- final boolean RECORDING_TRACK_PAUSED = context.getResources().getBoolean(R.bool.recording_track_paused_default);
- return PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key, RECORDING_TRACK_PAUSED);
+ return PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key, isRecordingTrackPaused(context));
+ }
+
+ public static boolean isRecordingTrackPausedDefault(Context context) {
+ return context.getResources().getBoolean(R.bool.recording_track_paused_default);
}
public static void defaultRecordingTrackPaused(Context context) {
@@ -337,7 +307,11 @@ public class PreferencesUtils {
public static int getRecordingDistanceInterval(Context context) {
final int RECORDING_DISTANCE_INTERVAL = Integer.parseInt(context.getResources().getString(R.string.recording_distance_interval_default));
- return PreferencesUtils.getInt(context, R.string.recording_distance_interval_key, RECORDING_DISTANCE_INTERVAL);
+ return PreferencesUtils.getInt(context, R.string.recording_distance_interval_key, getRecordingDistanceIntervalDefault(context));
+ }
+
+ public static int getRecordingDistanceIntervalDefault(Context context) {
+ return Integer.parseInt(context.getResources().getString(R.string.recording_distance_interval_default));
}
public static int getMaxRecordingDistance(Context context) {
@@ -350,6 +324,22 @@ public class PreferencesUtils {
return PreferencesUtils.getInt(context, R.string.min_recording_interval_key, MIN_RECORDING_INTERVAL);
}
+ public static int getMinRecordingIntervalAdaptAccuracy(Context context) {
+ return Integer.parseInt(context.getResources().getString(R.string.min_recording_interval_adapt_accuracy));
+ }
+
+ public static int getMinRecordingIntervalAdaptBatteryLife(Context context) {
+ return Integer.parseInt(context.getResources().getString(R.string.min_recording_interval_adapt_battery_life));
+ }
+
+ public static int getMinRecordingIntervalDefault(Context context) {
+ return Integer.parseInt(context.getResources().getString(R.string.min_recording_interval_default));
+ }
+
+
+
+
+
public static int getRecordingGPSAccuracy(Context context) {
final int RECORDING_GPS_ACCURACY = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default));
return PreferencesUtils.getInt(context, R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY);
diff --git a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java
index 7efddaa6a..dd78b111d 100644
--- a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java
@@ -359,7 +359,7 @@ public class StringUtils {
String[] options = new String[values.length];
for (int i = 0; i < values.length; i++) {
int value = Integer.parseInt(values[i]);
- if (value == PreferencesUtils.FREQUENCY_OFF) {
+ if (context.getString(R.string.frequency_off).equals(values[i])) {
options[i] = context.getString(R.string.value_off);
} else if (value < 0) {
options[i] = context.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, Math.abs(value));
diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml
index 166f15506..e40c10e54 100644
--- a/src/main/res/values/settings.xml
+++ b/src/main/res/values/settings.xml
@@ -129,12 +129,12 @@
splitFrequency
- @string/frequency_default
+ @string/frequency_off
voiceFrequency
- @string/frequency_default
- 0
+ @string/frequency_off
+ 0
- - @string/frequency_default
+ - @string/frequency_off
- 1
- 2
- 5
diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml
index c9a713591..b8086a25d 100644
--- a/src/main/res/xml/settings.xml
+++ b/src/main/res/xml/settings.xml
@@ -93,7 +93,7 @@ limitations under the License.
android:title="@string/settings_recording_track_name_title"
app:useSimpleSummaryProvider="true" />