Settings: separate recording settings (move GPS to sensors).

This commit is contained in:
Dennis Guse
2024-03-01 23:52:02 +01:00
parent fef1a3a84d
commit 887c24cbb0
37 changed files with 117 additions and 100 deletions
@@ -5,17 +5,15 @@ import android.os.Bundle;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceFragmentCompat;
import java.time.Duration;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.DistanceFormatter;
public class GpsSettingsFragment extends PreferenceFragmentCompat {
public class RecordingSettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings_gps);
addPreferencesFromResource(R.xml.settings_recording);
UnitSystem unitSystem = PreferencesUtils.getUnitSystem();
@@ -39,46 +37,24 @@ public class GpsSettingsFragment extends PreferenceFragmentCompat {
return getString(R.string.settings_recording_max_recording_distance_summary, formatter.formatDistance(distance));
}
);
findPreference(getString(R.string.recording_gps_accuracy_key))
.setSummaryProvider(
preference -> {
Distance distance = PreferencesUtils.getThresholdHorizontalAccuracy();
return getString(R.string.settings_recording_min_required_accuracy_summary, formatter.formatDistance(distance));
}
);
findPreference(getString(R.string.min_sampling_interval_key))
.setSummaryProvider(
preference -> {
Duration interval = PreferencesUtils.getMinSamplingInterval();
return getString(R.string.settings_recording_location_frequency_summary, getString(R.string.value_integer_second, interval.getSeconds()));
}
);
}
@Override
public void onStart() {
super.onStart();
((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_gps_title);
((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_recording_title);
}
@Override
public void onResume() {
super.onResume();
ListPreference minSamplingInterval = findPreference(getString(R.string.min_sampling_interval_key));
minSamplingInterval.setEntries(PreferencesUtils.getMinSamplingIntervalEntries());
ListPreference recordingDistanceInterval = findPreference(getString(R.string.recording_distance_interval_key));
recordingDistanceInterval.setEntries(PreferencesUtils.getRecordingDistanceIntervalEntries());
ListPreference maxRecordingDistance = findPreference(getString(R.string.max_recording_distance_key));
maxRecordingDistance.setEntries(PreferencesUtils.getMaxRecordingDistanceEntries());
ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key));
recordingGpsAccuracy.setEntries(PreferencesUtils.getThresholdHorizontalAccuracyEntries());
ListPreference idleDuration = findPreference(getString(R.string.idle_duration_key));
idleDuration.setEntries(PreferencesUtils.getIdleDurationEntries());
}
@@ -7,10 +7,15 @@ import android.widget.Toast;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import java.time.Duration;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.DistanceFormatter;
import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeSensorPreference;
import de.dennisguse.opentracks.util.PermissionRequester;
@@ -22,6 +27,29 @@ public class SensorsSettingsFragment extends PreferenceFragmentCompat {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings_sensors);
setWheelCircumferenceInputFilter();
UnitSystem unitSystem = PreferencesUtils.getUnitSystem();
final DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setUnit(unitSystem)
.build(getContext());
findPreference(getString(R.string.recording_gps_accuracy_key))
.setSummaryProvider(
preference -> {
Distance distance = PreferencesUtils.getThresholdHorizontalAccuracy();
return getString(R.string.settings_recording_min_required_accuracy_summary, formatter.formatDistance(distance));
}
);
findPreference(getString(R.string.min_sampling_interval_key))
.setSummaryProvider(
preference -> {
Duration interval = PreferencesUtils.getMinSamplingInterval();
return getString(R.string.settings_recording_location_frequency_summary, getString(R.string.value_integer_second, interval.getSeconds()));
}
);
}
@Override
@@ -30,6 +58,18 @@ public class SensorsSettingsFragment extends PreferenceFragmentCompat {
((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_sensors_title);
}
@Override
public void onResume() {
super.onResume();
ListPreference minSamplingInterval = findPreference(getString(R.string.min_sampling_interval_key));
minSamplingInterval.setEntries(PreferencesUtils.getMinSamplingIntervalEntries());
ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key));
recordingGpsAccuracy.setEntries(PreferencesUtils.getThresholdHorizontalAccuracyEntries());
}
@Override
public void onDisplayPreferenceDialog(Preference preference) {
if (preference instanceof BluetoothLeSensorPreference) {
@@ -85,7 +85,7 @@ public class SettingsActivity extends AbstractActivity implements ChooseActivity
} else if (key.equals(getString(R.string.settings_ui_key))) {
fragment = new UserInterfaceSettingsFragment();
} else if (key.equals(getString(R.string.settings_gps_key))) {
fragment = new GpsSettingsFragment();
fragment = new RecordingSettingsFragment();
} else if (key.equals(getString(R.string.settings_sensors_key))) {
fragment = new SensorsSettingsFragment();
} else if (key.equals(getString(R.string.settings_announcements_key))) {