forked from upstream-mirrors/OpenTracks
Fix a typo in shared preferences and minor cleanup.
This commit is contained in:
@@ -313,6 +313,9 @@ public class MyTracks extends TabActivity implements OnTouchListener,
|
|||||||
SharedPreferences prefs =
|
SharedPreferences prefs =
|
||||||
getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0);
|
getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0);
|
||||||
if (prefs != null) {
|
if (prefs != null) {
|
||||||
|
// Dump all preferences.
|
||||||
|
Log.i(MyTracksConstants.TAG, "Shared preferences:" + prefs.getAll());
|
||||||
|
|
||||||
selectedTrackId =
|
selectedTrackId =
|
||||||
prefs.getLong(getString(R.string.selected_track_key), -1);
|
prefs.getLong(getString(R.string.selected_track_key), -1);
|
||||||
recordingTrackId =
|
recordingTrackId =
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import android.util.Log;
|
|||||||
public class PreferenceManager {
|
public class PreferenceManager {
|
||||||
private TrackRecordingService service;
|
private TrackRecordingService service;
|
||||||
private final String announcementFrequencyKey;
|
private final String announcementFrequencyKey;
|
||||||
|
private final String autoResumeTrackCurrentRetryKey;
|
||||||
private final String autoResumeTrackTimeoutKey;
|
private final String autoResumeTrackTimeoutKey;
|
||||||
private final String maxRecordingDistanceKey;
|
private final String maxRecordingDistanceKey;
|
||||||
private final String metricUnitsKey;
|
private final String metricUnitsKey;
|
||||||
@@ -55,6 +56,8 @@ public class PreferenceManager {
|
|||||||
|
|
||||||
announcementFrequencyKey =
|
announcementFrequencyKey =
|
||||||
service.getString(R.string.announcement_frequency_key);
|
service.getString(R.string.announcement_frequency_key);
|
||||||
|
autoResumeTrackCurrentRetryKey =
|
||||||
|
service.getString(R.string.auto_resume_track_current_retry_key);
|
||||||
autoResumeTrackTimeoutKey =
|
autoResumeTrackTimeoutKey =
|
||||||
service.getString(R.string.auto_resume_track_timeout_key);
|
service.getString(R.string.auto_resume_track_timeout_key);
|
||||||
maxRecordingDistanceKey =
|
maxRecordingDistanceKey =
|
||||||
@@ -161,7 +164,7 @@ public class PreferenceManager {
|
|||||||
|
|
||||||
public void setAutoResumeTrackCurrentRetry(int retryAttempts) {
|
public void setAutoResumeTrackCurrentRetry(int retryAttempts) {
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
editor.putInt(autoResumeTrackTimeoutKey, retryAttempts);
|
editor.putInt(autoResumeTrackCurrentRetryKey, retryAttempts);
|
||||||
editor.commit();
|
editor.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -762,8 +762,8 @@ public class TrackRecordingService extends Service implements LocationListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean shouldResumeTrack(Track track) {
|
private boolean shouldResumeTrack(Track track) {
|
||||||
Log.d(MyTracksConstants.TAG,
|
Log.d(MyTracksConstants.TAG, "shouldResumeTrack: autoResumeTrackTimeout = "
|
||||||
"maybeResumeTrack: autoResumeTrackTimeout = " + autoResumeTrackTimeout);
|
+ autoResumeTrackTimeout);
|
||||||
|
|
||||||
// Check if we haven't exceeded the maximum number of retry attempts.
|
// Check if we haven't exceeded the maximum number of retry attempts.
|
||||||
SharedPreferences sharedPreferences =
|
SharedPreferences sharedPreferences =
|
||||||
@@ -771,11 +771,11 @@ public class TrackRecordingService extends Service implements LocationListener {
|
|||||||
int retries = sharedPreferences.getInt(
|
int retries = sharedPreferences.getInt(
|
||||||
getString(R.string.auto_resume_track_current_retry_key), 0);
|
getString(R.string.auto_resume_track_current_retry_key), 0);
|
||||||
Log.d(MyTracksConstants.TAG,
|
Log.d(MyTracksConstants.TAG,
|
||||||
"TrackRecordingService: Attempting to auto-resume the track ("
|
"shouldResumeTrack: Attempting to auto-resume the track ("
|
||||||
+ (retries + 1) + "/" + MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS + ")");
|
+ (retries + 1) + "/" + MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS + ")");
|
||||||
if (retries >= MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS) {
|
if (retries >= MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS) {
|
||||||
Log.i(MyTracksConstants.TAG,
|
Log.i(MyTracksConstants.TAG,
|
||||||
"TrackRecordingService: Not resuming because exceeded the maximum "
|
"shouldResumeTrack: Not resuming because exceeded the maximum "
|
||||||
+ "number of auto-resume retries");
|
+ "number of auto-resume retries");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -786,9 +786,13 @@ public class TrackRecordingService extends Service implements LocationListener {
|
|||||||
// Check for special cases.
|
// Check for special cases.
|
||||||
if (autoResumeTrackTimeout == 0) {
|
if (autoResumeTrackTimeout == 0) {
|
||||||
// Never resume.
|
// Never resume.
|
||||||
|
Log.d(MyTracksConstants.TAG,
|
||||||
|
"shouldResumeTrack: Auto-resume disabled (never resume)");
|
||||||
return false;
|
return false;
|
||||||
} else if (autoResumeTrackTimeout == -1) {
|
} else if (autoResumeTrackTimeout == -1) {
|
||||||
// Always resume.
|
// Always resume.
|
||||||
|
Log.d(MyTracksConstants.TAG,
|
||||||
|
"shouldResumeTrack: Auto-resume forced (always resume)");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -796,7 +800,8 @@ public class TrackRecordingService extends Service implements LocationListener {
|
|||||||
long lastModified =
|
long lastModified =
|
||||||
track.getStatistics() != null ? track.getStatistics().getStopTime() : 0;
|
track.getStatistics() != null ? track.getStatistics().getStopTime() : 0;
|
||||||
Log.d(MyTracksConstants.TAG,
|
Log.d(MyTracksConstants.TAG,
|
||||||
"maybeResumeTrack: lastModified = " + lastModified);
|
"shouldResumeTrack: lastModified = " + lastModified
|
||||||
|
+ ", autoResumeTrackTimeout: " + autoResumeTrackTimeout);
|
||||||
return lastModified > 0 && System.currentTimeMillis() - lastModified <=
|
return lastModified > 0 && System.currentTimeMillis() - lastModified <=
|
||||||
autoResumeTrackTimeout * 60 * 1000;
|
autoResumeTrackTimeout * 60 * 1000;
|
||||||
}
|
}
|
||||||
|
|||||||
+59
@@ -127,6 +127,33 @@ public class TrackRecordingServiceTest
|
|||||||
assertEquals(123, service.getRecordingTrackId());
|
assertEquals(123, service.getRecordingTrackId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@MediumTest
|
||||||
|
public void testResumeAfterReboot_simulateReboot() throws Exception {
|
||||||
|
updateAutoResumePrefs(0, 10);
|
||||||
|
ITrackRecordingService service = bindAndGetService(createStartIntent());
|
||||||
|
assertFalse(service.isRecording());
|
||||||
|
|
||||||
|
// Simulate recording a track.
|
||||||
|
long id = service.startNewTrack();
|
||||||
|
assertTrue(service.isRecording());
|
||||||
|
assertEquals(id, service.getRecordingTrackId());
|
||||||
|
shutdownService();
|
||||||
|
assertEquals(id, sharedPreferences.getLong(
|
||||||
|
context.getString(R.string.recording_track_key), -1));
|
||||||
|
|
||||||
|
Intent startIntent = createStartIntent();
|
||||||
|
startIntent.putExtra(RESUME_TRACK_EXTRA_NAME, true);
|
||||||
|
startService(startIntent);
|
||||||
|
assertNotNull(getService());
|
||||||
|
|
||||||
|
// TODO: shutdownService() has a bug and doesn't set mServiceCreated
|
||||||
|
// to false, thus preventing from second call to onCreate().
|
||||||
|
// Report the bug to Android team. Until then, the following check
|
||||||
|
// must be commented out.
|
||||||
|
|
||||||
|
// assertTrue(getService().isRecording());
|
||||||
|
}
|
||||||
|
|
||||||
@MediumTest
|
@MediumTest
|
||||||
public void testResumeAfterReboot_noRecordingTrack() throws Exception {
|
public void testResumeAfterReboot_noRecordingTrack() throws Exception {
|
||||||
// Insert a dummy track and mark it as recording track.
|
// Insert a dummy track and mark it as recording track.
|
||||||
@@ -274,6 +301,38 @@ public class TrackRecordingServiceTest
|
|||||||
assertEquals(-1, service.getRecordingTrackId());
|
assertEquals(-1, service.getRecordingTrackId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@MediumTest
|
||||||
|
public void testIntegration_completeRecordingSession() throws Exception {
|
||||||
|
List<Track> tracks = providerUtils.getAllTracks();
|
||||||
|
assertTrue(tracks.isEmpty());
|
||||||
|
|
||||||
|
ITrackRecordingService service = bindAndGetService(createStartIntent());
|
||||||
|
assertFalse(service.isRecording());
|
||||||
|
|
||||||
|
// Start a track.
|
||||||
|
long id = service.startNewTrack();
|
||||||
|
assertTrue(id >= 0);
|
||||||
|
assertTrue(service.isRecording());
|
||||||
|
Track track = providerUtils.getTrack(id);
|
||||||
|
assertNotNull(track);
|
||||||
|
assertEquals(id, track.getId());
|
||||||
|
assertEquals(id, sharedPreferences.getLong(
|
||||||
|
context.getString(R.string.recording_track_key), -1));
|
||||||
|
assertEquals(id, service.getRecordingTrackId());
|
||||||
|
|
||||||
|
// Stop the track. Validate if it has correct data.
|
||||||
|
service.endCurrentTrack();
|
||||||
|
assertFalse(service.isRecording());
|
||||||
|
assertEquals(-1, service.getRecordingTrackId());
|
||||||
|
track = providerUtils.getTrack(id);
|
||||||
|
assertNotNull(track);
|
||||||
|
assertEquals(id, track.getId());
|
||||||
|
TripStatistics tripStatistics = track.getStatistics();
|
||||||
|
assertNotNull(tripStatistics);
|
||||||
|
assertTrue(tripStatistics.getStartTime() > 0);
|
||||||
|
assertTrue(tripStatistics.getStopTime() >= tripStatistics.getStartTime());
|
||||||
|
}
|
||||||
|
|
||||||
@MediumTest
|
@MediumTest
|
||||||
public void testDeleteAllTracks_noRecording() throws Exception {
|
public void testDeleteAllTracks_noRecording() throws Exception {
|
||||||
createDummyTrack(123, -1, false);
|
createDummyTrack(123, -1, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user