Fix a typo in shared preferences and minor cleanup.

This commit is contained in:
Bartlomiej Niechwiej
2010-10-24 18:55:35 -07:00
parent 2dc1d914c0
commit 95ff0d3db6
4 changed files with 76 additions and 6 deletions
@@ -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;
} }
@@ -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);