Added settings for disabling idle functionality.

This commit is contained in:
Dennis Guse
2024-09-29 16:56:34 +02:00
parent e46d3cd06c
commit f7f58141de
3 changed files with 33 additions and 23 deletions
@@ -170,8 +170,7 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen
if (trackPoint.hasLocation() && lastStoredTrackPointWithLocation == null) { if (trackPoint.hasLocation() && lastStoredTrackPointWithLocation == null) {
insertTrackPoint(trackPoint, true); insertTrackPoint(trackPoint, true);
handler.removeCallbacks(ON_IDLE); scheduleNewIdleTimeout();
handler.postDelayed(ON_IDLE, idleDuration.toMillis());
return true; return true;
} }
@@ -199,16 +198,14 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen
trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC); trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
insertTrackPoint(trackPoint, true); insertTrackPoint(trackPoint, true);
handler.removeCallbacks(ON_IDLE); scheduleNewIdleTimeout();
handler.postDelayed(ON_IDLE, idleDuration.toMillis());
return true; return true;
} }
if (distanceToLastStoredTrackPoint.greaterOrEqualThan(recordingDistanceInterval)) { if (distanceToLastStoredTrackPoint.greaterOrEqualThan(recordingDistanceInterval)) {
insertTrackPoint(trackPoint, false); insertTrackPoint(trackPoint, false);
handler.removeCallbacks(ON_IDLE); scheduleNewIdleTimeout();
handler.postDelayed(ON_IDLE, idleDuration.toMillis());
return true; return true;
} }
@@ -218,6 +215,15 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen
return false; return false;
} }
private void scheduleNewIdleTimeout() {
if (idleDuration.isZero()) {
Log.d(TAG, "idle functionality is disabled");
return;
}
handler.removeCallbacks(ON_IDLE);
handler.postDelayed(ON_IDLE, idleDuration.toMillis());
}
TrackStatistics getTrackStatistics() { TrackStatistics getTrackStatistics() {
return trackStatisticsUpdater == null ? null : trackStatisticsUpdater.getTrackStatistics(); return trackStatisticsUpdater == null ? null : trackStatisticsUpdater.getTrackStatistics();
} }
@@ -344,17 +344,17 @@ public class PreferencesUtils {
} }
static String[] getVoiceAnnouncementFrequencyEntries() { static String[] getVoiceAnnouncementFrequencyEntries() {
String[] values = resources.getStringArray(R.array.voice_announcement_frequency_values); String[] entryValues = resources.getStringArray(R.array.voice_announcement_frequency_values);
String[] options = new String[values.length]; String[] entries = new String[entryValues.length];
for (int i = 0; i < values.length; i++) { for (int i = 0; i < entryValues.length; i++) {
if (resources.getString(R.string.announcement_off).equals(values[i])) { if (resources.getString(R.string.announcement_off).equals(entryValues[i])) {
options[i] = resources.getString(R.string.value_off); entries[i] = resources.getString(R.string.value_off);
} else { } else {
int value = Integer.parseInt(values[i]); int value = Integer.parseInt(entryValues[i]);
options[i] = resources.getString(R.string.value_integer_minute, Duration.ofSeconds(value).toMinutes()); entries[i] = resources.getString(R.string.value_integer_minute, Duration.ofSeconds(value).toMinutes());
} }
} }
return options; return entries;
} }
/** /**
@@ -370,23 +370,23 @@ public class PreferencesUtils {
* @return Result depends on getUnitSystem * @return Result depends on getUnitSystem
*/ */
static String[] getVoiceAnnouncementDistanceEntries() { static String[] getVoiceAnnouncementDistanceEntries() {
String[] values = resources.getStringArray(R.array.voice_announcement_distance_values); String[] entryValues = resources.getStringArray(R.array.voice_announcement_distance_values);
String[] options = new String[values.length]; String[] entries = new String[entryValues.length];
UnitSystem unitSystem = getUnitSystem(); UnitSystem unitSystem = getUnitSystem();
DistanceFormatter formatter = DistanceFormatter.Builder() DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0) .setDecimalCount(0)
.setUnit(unitSystem) .setUnit(unitSystem)
.build(resources); .build(resources);
for (int i = 0; i < values.length; i++) { for (int i = 0; i < entryValues.length; i++) {
if (resources.getString(R.string.announcement_off).equals(values[i])) { if (resources.getString(R.string.announcement_off).equals(entryValues[i])) {
options[i] = resources.getString(R.string.value_off); entries[i] = resources.getString(R.string.value_off);
} else { } else {
Distance distance = Distance.one(unitSystem).multipliedBy(Double.parseDouble(values[i])); Distance distance = Distance.one(unitSystem).multipliedBy(Double.parseDouble(entryValues[i]));
options[i] = formatter.formatDistance(distance); entries[i] = formatter.formatDistance(distance);
} }
} }
return options; return entries;
} }
public static float getVoiceSpeedRate() { public static float getVoiceSpeedRate() {
@@ -642,7 +642,9 @@ public class PreferencesUtils {
for (int i = 0; i < entryValues.length; i++) { for (int i = 0; i < entryValues.length; i++) {
int value = Integer.parseInt(entryValues[i]); int value = Integer.parseInt(entryValues[i]);
if (value == idleDurationDefault) { if (resources.getString(R.string.announcement_off).equals(entryValues[i])) {
entries[i] = resources.getString(R.string.value_off);
} else if (value == idleDurationDefault) {
entries[i] = resources.getString(R.string.value_int_seconds, value); entries[i] = resources.getString(R.string.value_int_seconds, value);
} else { } else {
entries[i] = value < 60 ? resources.getString(R.string.value_integer_second, value) : resources.getString(R.string.value_integer_minute, value / 60); entries[i] = value < 60 ? resources.getString(R.string.value_integer_second, value) : resources.getString(R.string.value_integer_minute, value / 60);
+2
View File
@@ -127,7 +127,9 @@
<string name="idle_duration_key" translatable="false">idleSpeedDuration</string> <string name="idle_duration_key" translatable="false">idleSpeedDuration</string>
<string name="idle_duration_default" translatable="false">10</string> <string name="idle_duration_default" translatable="false">10</string>
<string name="idle_duration_off" translatable="false">0</string>
<string-array name="idle_duration_values"> <string-array name="idle_duration_values">
<item>@string/idle_duration_off</item>
<item>5</item> <item>5</item>
<item>@string/idle_duration_default</item> <item>@string/idle_duration_default</item>
<item>15</item> <item>15</item>