From b3ad974bbbafa5bf5563ae189b3b816ff5bffde0 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Wed, 22 Aug 2012 13:16:18 -0700 Subject: [PATCH] Update the ui thread in StatsFragment to support pause/resume for the total time. --- .../apps/mytracks/ImportAsyncTask.java | 6 +- .../apps/mytracks/content/TrackDataHub.java | 90 +++++++++++------- .../mytracks/content/TrackDataListener.java | 3 +- .../mytracks/fragments/ChartFragment.java | 2 +- .../apps/mytracks/fragments/MapFragment.java | 12 ++- .../mytracks/fragments/StatsFragment.java | 38 ++++---- .../apps/mytracks/io/file/SaveAsyncTask.java | 5 +- .../services/TrackRecordingService.java | 92 ++++++++++--------- .../services/tasks/PeriodicTaskExecutor.java | 3 +- .../mytracks/content/TrackDataHubTest.java | 2 +- 10 files changed, 147 insertions(+), 106 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/ImportAsyncTask.java b/MyTracks/src/com/google/android/apps/mytracks/ImportAsyncTask.java index 4723b36cd..bcabfd810 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/ImportAsyncTask.java +++ b/MyTracks/src/com/google/android/apps/mytracks/ImportAsyncTask.java @@ -82,9 +82,11 @@ public class ImportAsyncTask extends AsyncTask { myTracksProviderUtils = MyTracksProviderUtils.Factory.get(importActivity); - // Get the wake lock if not recording + // Get the wake lock if not recording or paused if (PreferencesUtils.getLong(importActivity, R.string.recording_track_id_key) - == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { + == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT || PreferencesUtils.getBoolean( + importActivity, R.string.recording_track_paused_key, + PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT)) { wakeLock = SystemUtils.acquireWakeLock(importActivity, wakeLock); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java index 1f99d4257..4af1e0466 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java @@ -70,6 +70,8 @@ public class TrackDataHub implements DataSourceListener { // Preference values private long selectedTrackId; + private long recordingTrackId; + private boolean recordingTrackPaused; private boolean metricUnits; private boolean reportSpeed; private int minRequiredAccuracy; @@ -132,17 +134,11 @@ public class TrackDataHub implements DataSourceListener { dataSource = newDataSource(); dataSourceManager = new DataSourceManager(dataSource, this); + notifyPreferenceChanged(null); runInHanderThread(new Runnable() { @Override public void run() { dataSourceManager.updateListeners(trackDataManager.getRegisteredTrackDataTypes()); - selectedTrackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key); - metricUnits = PreferencesUtils.getBoolean( - context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); - reportSpeed = PreferencesUtils.getBoolean( - context, R.string.report_speed_key, PreferencesUtils.REPORT_SPEED_DEFAULT); - minRequiredAccuracy = PreferencesUtils.getInt(context, R.string.min_required_accuracy_key, - PreferencesUtils.MIN_REQUIRED_ACCURACY_DEFAULT); loadDataForAll(); } }); @@ -251,9 +247,15 @@ public class TrackDataHub implements DataSourceListener { * Returns true if the selected track is recording. */ public boolean isSelectedTrackRecording() { - long recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); - return recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT - && recordingTrackId == selectedTrackId; + return selectedTrackId == recordingTrackId + && recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; + } + + /** + * Returns true if the selected track is paused. + */ + public boolean isSelectedTrackPaused() { + return selectedTrackId == recordingTrackId && recordingTrackPaused; } @Override @@ -293,37 +295,57 @@ public class TrackDataHub implements DataSourceListener { runInHanderThread(new Runnable() { @Override public void run() { - if (PreferencesUtils.getKey(context, R.string.min_required_accuracy_key).equals(key)) { - minRequiredAccuracy = PreferencesUtils.getInt(context, R.string.min_required_accuracy_key, - PreferencesUtils.MIN_REQUIRED_ACCURACY_DEFAULT); - } else if (PreferencesUtils.getKey(context, R.string.metric_units_key).equals(key)) { + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.selected_track_id_key))) { + long trackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key); + boolean hasChanged = trackId != selectedTrackId; + selectedTrackId = trackId; + if (key != null) { + if (hasChanged) { + loadDataForAll(); + } + } + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) { + recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) { + recordingTrackPaused = PreferencesUtils.getBoolean( + context, R.string.recording_track_paused_key, + PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) { metricUnits = PreferencesUtils.getBoolean( context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); - Set trackDataListeners = trackDataManager.getListeners( - TrackDataType.PREFERENCE); - for (TrackDataListener trackDataListener : trackDataListeners) { - if (trackDataListener.onMetricUnitsChanged(metricUnits)) { - loadDataForListener(trackDataListener); + if (key != null) { + for (TrackDataListener trackDataListener : + trackDataManager.getListeners(TrackDataType.PREFERENCE)) { + if (trackDataListener.onMetricUnitsChanged(metricUnits)) { + loadDataForListener(trackDataListener); + } } } - } else if (PreferencesUtils.getKey(context, R.string.report_speed_key).equals(key)) { + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.report_speed_key))) { reportSpeed = PreferencesUtils.getBoolean( context, R.string.report_speed_key, PreferencesUtils.REPORT_SPEED_DEFAULT); - Set trackDataListeners = trackDataManager.getListeners( - TrackDataType.PREFERENCE); - for (TrackDataListener trackDataListener : trackDataListeners) { - if (trackDataListener.onReportSpeedChanged(reportSpeed)) { - loadDataForListener(trackDataListener); + if (key != null) { + for (TrackDataListener trackDataListener : + trackDataManager.getListeners(TrackDataType.PREFERENCE)) { + if (trackDataListener.onReportSpeedChanged(reportSpeed)) { + loadDataForListener(trackDataListener); + } } } - } else if (PreferencesUtils.getKey(context, R.string.selected_track_id_key).equals(key)) { - long trackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key); - if (trackId == selectedTrackId) { - Log.i(TAG, "Not reloading track " + trackId); - return; - } - selectedTrackId = trackId; - loadDataForAll(); + } + if (key == null + || key.equals(PreferencesUtils.getKey(context, R.string.min_required_accuracy_key))) { + minRequiredAccuracy = PreferencesUtils.getInt(context, R.string.min_required_accuracy_key, + PreferencesUtils.MIN_REQUIRED_ACCURACY_DEFAULT); } } }); @@ -487,7 +509,7 @@ public class TrackDataHub implements DataSourceListener { } Track track = myTracksProviderUtils.getTrack(selectedTrackId); for (TrackDataListener trackDataListener : trackDataListeners) { - trackDataListener.onSelectedTrackChanged(track, isSelectedTrackRecording()); + trackDataListener.onSelectedTrackChanged(track); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataListener.java b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataListener.java index f40439a09..9842b4edd 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataListener.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataListener.java @@ -64,9 +64,8 @@ public interface TrackDataListener { * calls to clear the current data). * * @param track the selected track or null if no track is selected - * @param isRecording true if the selected track is recording */ - public void onSelectedTrackChanged(Track track, boolean isRecording); + public void onSelectedTrackChanged(Track track); /** * Called when the track or its statistics has been updated. diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java index a7964af05..8f069e030 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java @@ -179,7 +179,7 @@ public class ChartFragment extends Fragment implements TrackDataListener { } @Override - public void onSelectedTrackChanged(Track track, boolean isRecording) { + public void onSelectedTrackChanged(Track track) { // We don't care. } diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java index ee3acd5fe..35d35bca3 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java @@ -334,7 +334,7 @@ public class MapFragment extends Fragment } @Override - public void onSelectedTrackChanged(final Track track, final boolean isRecording) { + public void onSelectedTrackChanged(final Track track) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -350,7 +350,7 @@ public class MapFragment extends Fragment currentSelectedTrackId = track.getId(); updateMap(track); } - mapOverlay.setShowEndMarker(!isRecording); + mapOverlay.setShowEndMarker(!isSelectedTrackRecording()); } mapView.invalidate(); } @@ -452,6 +452,14 @@ public class MapFragment extends Fragment } } + /** + * Returns true if the selected track is recording. Needs to be synchronized + * because trackDataHub can be accessed by multiple threads. + */ + private synchronized boolean isSelectedTrackRecording() { + return trackDataHub != null && trackDataHub.isSelectedTrackRecording(); + } + /** * Updates the map by either zooming to the requested marker or showing the track. * diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java index 580ed784f..1e11174f1 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java @@ -23,7 +23,6 @@ import com.google.android.apps.mytracks.content.TrackDataListener; import com.google.android.apps.mytracks.content.TrackDataType; import com.google.android.apps.mytracks.content.Waypoint; import com.google.android.apps.mytracks.stats.TripStatistics; -import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.apps.mytracks.util.StatsUtils; import com.google.android.maps.mytracks.R; @@ -39,30 +38,28 @@ import java.util.EnumSet; /** * A fragment to display track statistics to the user. - * + * * @author Sandor Dornbush * @author Rodrigo Damazio */ public class StatsFragment extends Fragment implements TrackDataListener { public static final String STATS_FRAGMENT_TAG = "statsFragment"; - + private static final String TAG = StatsFragment.class.getSimpleName(); private TrackDataHub trackDataHub; private UiUpdateThread uiUpdateThread; - // The start time of the current track. - private long startTime = -1L; - private Location lastLocation = null; private TripStatistics lastTripStatistics = null; - + // A runnable to update the total time field. private final Runnable updateTotalTime = new Runnable() { public void run() { - if (isSelectedTrackRecording()) { - StatsUtils.setTotalTimeValue(getActivity(), System.currentTimeMillis() - startTime); + if (isSelectedTrackRecording() && !isSelectedTrackPaused() && lastTripStatistics != null) { + StatsUtils.setTotalTimeValue(getActivity(), System.currentTimeMillis() + - lastTripStatistics.getStopTime() + lastTripStatistics.getTotalTime()); } } }; @@ -74,8 +71,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { @Override public void run() { Log.d(TAG, "UI update thread started"); - while (PreferencesUtils.getLong(getActivity(), R.string.recording_track_id_key) - != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { + while (true) { getActivity().runOnUiThread(updateTotalTime); try { Thread.sleep(1000L); @@ -133,7 +129,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { public void onLocationChanged(final Location location) { if (isResumed() && isSelectedTrackRecording()) { getActivity().runOnUiThread(new Runnable() { - @Override + @Override public void run() { lastLocation = location; StatsUtils.setLocationValues(getActivity(), lastLocation, true); @@ -148,8 +144,9 @@ public class StatsFragment extends Fragment implements TrackDataListener { } @Override - public void onSelectedTrackChanged(Track track, boolean isRecording) { + public void onSelectedTrackChanged(Track track) { if (isResumed()) { + boolean isRecording = isSelectedTrackRecording(); if (uiUpdateThread == null && isRecording) { uiUpdateThread = new UiUpdateThread(); uiUpdateThread.start(); @@ -164,7 +161,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { public void onTrackUpdated(final Track track) { if (isResumed()) { getActivity().runOnUiThread(new Runnable() { - @Override + @Override public void run() { if (track == null || track.getTripStatistics() == null) { lastLocation = null; @@ -173,8 +170,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { return; } lastTripStatistics = track.getTripStatistics(); - - startTime = track.getTripStatistics().getStartTime(); + if (!isSelectedTrackRecording()) { lastLocation = null; } @@ -228,7 +224,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { public boolean onMetricUnitsChanged(final boolean metric) { if (isResumed()) { getActivity().runOnUiThread(new Runnable() { - @Override + @Override public void run() { updateUi(); } @@ -280,6 +276,14 @@ public class StatsFragment extends Fragment implements TrackDataListener { return trackDataHub != null && trackDataHub.isSelectedTrackRecording(); } + /** + * Returns true if the selected track is paused. Needs to be synchronized + * because trackDataHub can be accessed by multiple threads. + */ + private synchronized boolean isSelectedTrackPaused() { + return trackDataHub != null && trackDataHub.isSelectedTrackPaused(); + } + /** * Updates the UI. */ diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveAsyncTask.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveAsyncTask.java index 15149f473..622594f94 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveAsyncTask.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveAsyncTask.java @@ -81,9 +81,10 @@ public class SaveAsyncTask extends AsyncTask { myTracksProviderUtils = MyTracksProviderUtils.Factory.get(saveActivity); - // Get the wake lock if not recording + // Get the wake lock if not recording or paused if (PreferencesUtils.getLong(saveActivity, R.string.recording_track_id_key) - == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { + == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT || PreferencesUtils.getBoolean(saveActivity, + R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT)) { wakeLock = SystemUtils.acquireWakeLock(saveActivity, wakeLock); } 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 6570f8b3d..d810aedf2 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -570,8 +570,8 @@ public class TrackRecordingService extends Service { PreferencesUtils.setInt(this, R.string.auto_resume_track_current_retry_key, 0); // Update database - track.setId(recordingTrackId); - track.setName(TrackNameUtils.getTrackName(this, recordingTrackId, now, null)); + track.setId(trackId); + track.setName(TrackNameUtils.getTrackName(this, trackId, now, null)); track.setCategory(PreferencesUtils.getString( this, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT)); track.setTripStatistics(trackTripStatisticsBuilder.getTripStatistics()); @@ -579,7 +579,7 @@ public class TrackRecordingService extends Service { insertWaypoint(WaypointCreationRequest.DEFAULT_START_TRACK); startRecording(true); - return recordingTrackId; + return trackId; } /** @@ -644,11 +644,14 @@ public class TrackRecordingService extends Service { PreferencesUtils.setBoolean(this, R.string.recording_track_paused_key, false); // Update database - Location resume = new Location(LocationManager.GPS_PROVIDER); - resume.setLongitude(0); - resume.setLatitude(RESUME_LATITUDE); - resume.setTime(System.currentTimeMillis()); - insertLocation(resume, null, null); + Track track = myTracksProviderUtils.getTrack(recordingTrackId); + if (track != null) { + Location resume = new Location(LocationManager.GPS_PROVIDER); + resume.setLongitude(0); + resume.setLatitude(RESUME_LATITUDE); + resume.setTime(System.currentTimeMillis()); + insertLocation(track, resume, null); + } startRecording(false); } @@ -696,13 +699,10 @@ public class TrackRecordingService extends Service { updateRecordingState(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, true); // Update database - insertLocation(lastLocation, getSensorDataSet(), - myTracksProviderUtils.getLastTrackLocation(recordingTrackId)); - - Track track = myTracksProviderUtils.getTrack(recordingTrackId); + Track track = myTracksProviderUtils.getTrack(trackId); if (track != null) { - updateRecordingTrack( - track, myTracksProviderUtils.getLastTrackLocationId(recordingTrackId), false); + insertLocation(track, lastLocation, myTracksProviderUtils.getLastTrackLocation(trackId)); + updateRecordingTrack(track, myTracksProviderUtils.getLastTrackLocationId(trackId), false); } endRecording(true, trackId); @@ -723,14 +723,17 @@ public class TrackRecordingService extends Service { PreferencesUtils.setBoolean(this, R.string.recording_track_paused_key, true); // Update database - insertLocation(lastLocation, getSensorDataSet(), - myTracksProviderUtils.getLastTrackLocation(recordingTrackId)); + Track track = myTracksProviderUtils.getTrack(recordingTrackId); + if (track != null) { + insertLocation( + track, lastLocation, myTracksProviderUtils.getLastTrackLocation(track.getId())); - Location pause = new Location(LocationManager.GPS_PROVIDER); - pause.setLongitude(0); - pause.setLatitude(PAUSE_LATITUDE); - pause.setTime(System.currentTimeMillis()); - insertLocation(pause, null, null); + Location pause = new Location(LocationManager.GPS_PROVIDER); + pause.setLongitude(0); + pause.setLatitude(PAUSE_LATITUDE); + pause.setTime(System.currentTimeMillis()); + insertLocation(track, pause, null); + } endRecording(false, recordingTrackId); } @@ -739,7 +742,7 @@ public class TrackRecordingService extends Service { * Common code for ending a track or pausing a track. * * @param trackStopped true if track is stopped, false if track is paused - * @param trackId + * @param trackId the track id */ private void endRecording(boolean trackStopped, long trackId) { @@ -773,7 +776,7 @@ public class TrackRecordingService extends Service { */ private void updateRecordingState(long trackId, boolean paused) { recordingTrackId = trackId; - PreferencesUtils.setLong(this, R.string.recording_track_id_key, recordingTrackId); + PreferencesUtils.setLong(this, R.string.recording_track_id_key, trackId); recordingTrackPaused = paused; PreferencesUtils.setBoolean(this, R.string.recording_track_paused_key, recordingTrackPaused); } @@ -790,6 +793,12 @@ public class TrackRecordingService extends Service { return; } + Track track = myTracksProviderUtils.getTrack(recordingTrackId); + if (track == null) { + Log.w(TAG, "Ignore onLocationChangedAsync. No track."); + return; + } + if (!LocationUtils.isValidLocation(location)) { Log.w(TAG, "Ignore onLocationChangedAsync. location is invalid."); return; @@ -800,20 +809,23 @@ public class TrackRecordingService extends Service { return; } - Location lastTrackLocation = myTracksProviderUtils.getLastTrackLocation(recordingTrackId); - SensorDataSet sensorDataSet = getSensorDataSet(); - + Location lastTrackLocation = myTracksProviderUtils.getLastTrackLocation(track.getId()); long idleTime = currentSegmentHasLocation && LocationUtils.isValidLocation(lastTrackLocation) ? location.getTime() - lastTrackLocation.getTime() - : 0; + : 0L; locationListenerPolicy.updateIdleTime(idleTime); if (currentRecordingInterval != locationListenerPolicy.getDesiredPollingInterval()) { registerLocationListener(); } + SensorDataSet sensorDataSet = getSensorDataSet(); + if (sensorDataSet != null) { + location = new MyTracksLocation(location, sensorDataSet); + } + // Always insert the first segment location if (!currentSegmentHasLocation) { - insertLocation(location, sensorDataSet, lastTrackLocation); + insertLocation(track, location, lastTrackLocation); currentSegmentHasLocation = true; lastLocation = location; return; @@ -824,7 +836,7 @@ public class TrackRecordingService extends Service { * Should not happen. The current segment should have a location. Just * insert the current location. */ - insertLocation(location, sensorDataSet, lastTrackLocation); + insertLocation(track, location, lastTrackLocation); lastLocation = location; return; } @@ -833,21 +845,21 @@ public class TrackRecordingService extends Service { if (distanceToLastTrackLocation < minRecordingDistance && sensorDataSet == null) { // skip } else if (distanceToLastTrackLocation > maxRecordingDistance) { - insertLocation(lastLocation, sensorDataSet, lastTrackLocation); + insertLocation(track, lastLocation, lastTrackLocation); Location pause = new Location(LocationManager.GPS_PROVIDER); pause.setLongitude(0); pause.setLatitude(PAUSE_LATITUDE); pause.setTime(lastLocation.getTime()); - insertLocation(pause, null, null); + insertLocation(track, pause, null); - insertLocation(location, sensorDataSet, lastTrackLocation); + insertLocation(track, location, lastTrackLocation); } else { /* * (distanceToLastTrackLocation >= minRecordingDistance || * hasSensorData) && distanceToLastTrackLocation <= maxRecordingDistance */ - insertLocation(lastLocation, sensorDataSet, lastTrackLocation); - insertLocation(location, sensorDataSet, lastTrackLocation); + insertLocation(track, lastLocation, lastTrackLocation); + insertLocation(track, location, lastTrackLocation); } lastLocation = location; } catch (Error e) { @@ -859,12 +871,7 @@ public class TrackRecordingService extends Service { } } - private void insertLocation( - Location location, SensorDataSet sensorDataSet, Location lastRecordedLocation) { - Track track = myTracksProviderUtils.getTrack(recordingTrackId); - if (track == null) { - return; - } + private void insertLocation(Track track, Location location, Location lastRecordedLocation) { if (location == null) { return; } @@ -873,10 +880,7 @@ public class TrackRecordingService extends Service { } try { - if (sensorDataSet != null) { - location = new MyTracksLocation(location, sensorDataSet); - } - Uri uri = myTracksProviderUtils.insertTrackPoint(location, recordingTrackId); + Uri uri = myTracksProviderUtils.insertTrackPoint(location, track.getId()); long trackPointId = Long.parseLong(uri.getLastPathSegment()); trackTripStatisticsBuilder.addLocation(location, minRecordingDistance); markerTripStatisticsBuilder.addLocation(location, minRecordingDistance); diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/tasks/PeriodicTaskExecutor.java b/MyTracks/src/com/google/android/apps/mytracks/services/tasks/PeriodicTaskExecutor.java index 112ea4db2..05fdcacbc 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/tasks/PeriodicTaskExecutor.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/tasks/PeriodicTaskExecutor.java @@ -159,7 +159,8 @@ public class PeriodicTaskExecutor { * Calculates the next distance for the distance periodic task. */ private void calculateNextTaskDistance() { - if (!trackRecordingService.isRecording() || trackRecordingService.isPaused() || periodicTask == null) { + if (!trackRecordingService.isRecording() || trackRecordingService.isPaused() + || periodicTask == null) { return; } diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/content/TrackDataHubTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/content/TrackDataHubTest.java index 3174b1fc9..4837b88a1 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/content/TrackDataHubTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/content/TrackDataHubTest.java @@ -798,7 +798,7 @@ public class TrackDataHubTest extends AndroidTestCase { expect(myTracksProviderUtils.getTrack(capture(new Capture()))).andReturn(track); // Make the track id is unique. PreferencesUtils.setLong(context, R.string.recording_track_id_key, System.currentTimeMillis()); - trackDataListener1.onSelectedTrackChanged(track, false); + trackDataListener1.onSelectedTrackChanged(track); replay(); trackDataHub.start(); trackDataHub.registerTrackDataListener(trackDataListener1, EnumSet.of(TrackDataType.SELECTED_TRACK));