forked from upstream-mirrors/OpenTracks
Added settings for disabling idle functionality.
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user