From fac59ab70562a7c40e7e5cfe7e7260f5354cf0fe Mon Sep 17 00:00:00 2001 From: Bartlomiej Niechwiej Date: Mon, 4 Oct 2010 21:53:34 -0700 Subject: [PATCH] Partially fix a nasty bug related to losing a tracking session on service crash. --- .../android/apps/mytracks/MyTracks.java | 55 +++++++------------ .../services/TrackRecordingService.java | 2 +- 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java index 759260a28..05f61e1b2 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java @@ -46,7 +46,6 @@ import android.content.Intent; import android.content.ServiceConnection; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; import android.location.Location; @@ -112,7 +111,7 @@ public class MyTracks extends TabActivity implements OnTouchListener, private AuthManager auth; private final HashMap authMap = new HashMap(); - private AccountChooser accountChooser = new AccountChooser(); + private final AccountChooser accountChooser = new AccountChooser(); /* * Dialogs: @@ -186,17 +185,7 @@ public class MyTracks extends TabActivity implements OnTouchListener, trackRecordingService = ITrackRecordingService.Stub.asInterface(service); if (startNewTrackRequested) { startNewTrackRequested = false; - try { - recordingTrackId = trackRecordingService.startNewTrack(); - Toast.makeText(MyTracks.this, - R.string.status_now_recording, Toast.LENGTH_SHORT).show(); - setSelectedAndRecordingTrack(recordingTrackId, recordingTrackId); - } catch (RemoteException e) { - Toast.makeText(MyTracks.this, - R.string.error_unable_to_start_recording, Toast.LENGTH_SHORT) - .show(); - Log.w(MyTracksConstants.TAG, "Unable to start recording.", e); - } + startRecordingNewTrack(); } } @@ -347,8 +336,8 @@ public class MyTracks extends TabActivity implements OnTouchListener, // Called when activity is going into the background, but has not (yet) been // killed. Shouldn't block longer than approx. 2 seconds. Log.d(MyTracksConstants.TAG, "MyTracks.onPause"); - super.onPause(); tryUnbindTrackRecordingService(); + super.onPause(); } @Override @@ -356,23 +345,23 @@ public class MyTracks extends TabActivity implements OnTouchListener, // Called when the current activity is being displayed or re-displayed // to the user. Log.d(MyTracksConstants.TAG, "MyTracks.onResume"); - super.onResume(); tryBindTrackRecordingService(); + super.onResume(); } @Override protected void onStop() { Log.d(MyTracksConstants.TAG, "MyTracks.onStop"); - super.onStop(); // Clean up any temporary GPX and KML files. cleanTmpDirectory("gpx"); cleanTmpDirectory("kml"); + super.onStop(); } private void cleanTmpDirectory(String name) { if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { - return; // Can't do anything now. + return; // Can't do anything now. } String sep = System.getProperty("file.separator"); File dir = new File( @@ -390,11 +379,6 @@ public class MyTracks extends TabActivity implements OnTouchListener, } } - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - } - /* * Menu events: * ============ @@ -1223,6 +1207,20 @@ public class MyTracks extends TabActivity implements OnTouchListener, } }, account); } + + private void startRecordingNewTrack() { + try { + recordingTrackId = trackRecordingService.startNewTrack(); + Toast.makeText(this, getString(R.string.status_now_recording), + Toast.LENGTH_SHORT).show(); + setSelectedAndRecordingTrack(recordingTrackId, recordingTrackId); + } catch (RemoteException e) { + Toast.makeText(this, + getString(R.string.error_unable_to_start_recording), + Toast.LENGTH_SHORT).show(); + Log.w(MyTracksConstants.TAG, "Unable to start recording.", e); + } + } /** * Starts the track recording service (if not already running) and binds to @@ -1235,18 +1233,7 @@ public class MyTracks extends TabActivity implements OnTouchListener, startService(startIntent); tryBindTrackRecordingService(); } else { - try { - recordingTrackId = trackRecordingService.startNewTrack(); - Toast.makeText(this, getString(R.string.status_now_recording), - Toast.LENGTH_SHORT).show(); - setSelectedAndRecordingTrack(recordingTrackId, recordingTrackId); - } catch (RemoteException e) { - Toast.makeText(this, - getString(R.string.error_unable_to_start_recording), - Toast.LENGTH_SHORT).show(); - Log.e(MyTracksConstants.TAG, - "Failed to start track recording service", e); - } + startRecordingNewTrack(); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java index 39739669e..920f38054 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -984,7 +984,7 @@ public class TrackRecordingService extends Service implements LocationListener { @Override public void sharedPreferenceChanged(String key) { Log.d(MyTracksConstants.TAG, - "TrackRecordingService.sharedPrefereneChange"); + "TrackRecordingService.sharedPreferenceChanged: " + key); onSharedPreferenceChanged(key); } };