From 5ecb41adc25c5bb0812cc0e9b92ea4458fd5b3b1 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Tue, 19 Nov 2013 14:19:11 -0800 Subject: [PATCH] Update calorie when activity recognition api sets the track category --- .../services/TrackRecordingService.java | 79 +++++++++++-------- 1 file changed, 48 insertions(+), 31 deletions(-) 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 978923a98..ead2f04a9 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -763,35 +763,44 @@ public class TrackRecordingService extends Service { // Update database Track track = myTracksProviderUtils.getTrack(trackId); - if (track != null && !paused) { - insertLocation(track, lastLocation, getLastValidTrackPointInCurrentSegment(trackId)); + if (track != null) { - int activityRecognitionType = PreferencesUtils.getInt(this, - R.string.activity_recognition_type_key, - PreferencesUtils.ACTIVITY_RECOGNITION_TYPE_DEFAULT); - if (activityRecognitionType != PreferencesUtils.ACTIVITY_RECOGNITION_TYPE_DEFAULT) { - String iconValue = null; - switch (activityRecognitionType) { - case DetectedActivity.IN_VEHICLE: - iconValue = TrackIconUtils.DRIVE; - break; - case DetectedActivity.ON_BICYCLE: - iconValue = TrackIconUtils.BIKE; - break; - case DetectedActivity.ON_FOOT: - iconValue = TrackIconUtils.WALK; - break; - default: - break; + // If not paused, add the last location + if (!paused) { + insertLocation(track, lastLocation, getLastValidTrackPointInCurrentSegment(trackId)); + } + + // Update the recording track time + updateRecordingTrack(track, myTracksProviderUtils.getLastTrackPointId(trackId), false); + + if (track.getCategory().equals(PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT)) { + int activityRecognitionType = PreferencesUtils.getInt(this, + R.string.activity_recognition_type_key, + PreferencesUtils.ACTIVITY_RECOGNITION_TYPE_DEFAULT); + if (activityRecognitionType != PreferencesUtils.ACTIVITY_RECOGNITION_TYPE_DEFAULT) { + String iconValue = null; + switch (activityRecognitionType) { + case DetectedActivity.IN_VEHICLE: + iconValue = TrackIconUtils.DRIVE; + break; + case DetectedActivity.ON_BICYCLE: + iconValue = TrackIconUtils.BIKE; + break; + case DetectedActivity.ON_FOOT: + iconValue = TrackIconUtils.WALK; + break; + default: + break; + } + if (iconValue != null) { + track.setIcon(iconValue); + track.setCategory(getString(TrackIconUtils.getIconActivityType(iconValue))); + myTracksProviderUtils.updateTrack(track); + CalorieUtils.updateTrackCalorie(context, track); + } } - if (iconValue != null) { - track.setIcon(iconValue); - track.setCategory(getString(TrackIconUtils.getIconActivityType(iconValue))); - } - } - updateRecordingTrack(track, myTracksProviderUtils.getLastTrackPointId(trackId), false); + } } - endRecording(true, trackId); } @@ -1031,15 +1040,23 @@ public class TrackRecordingService extends Service { sendTrackBroadcast(R.string.track_update_broadcast_action, track.getId()); } + /** + * Updates the recording track time. Also updates the startId and the stopId. + * Increase the number of points if it is a new and valid track point. + * + * @param track the track + * @param lastTrackPointId the last track point id + * @param increaseNumberOfPoints true to increase the number of points + */ private void updateRecordingTrack( - Track track, long trackPointId, boolean isTrackPointNewAndValid) { - if (trackPointId >= 0) { + Track track, long lastTrackPointId, boolean increaseNumberOfPoints) { + if (lastTrackPointId >= 0) { if (track.getStartId() < 0) { - track.setStartId(trackPointId); + track.setStartId(lastTrackPointId); } - track.setStopId(trackPointId); + track.setStopId(lastTrackPointId); } - if (isTrackPointNewAndValid) { + if (increaseNumberOfPoints) { track.setNumberOfPoints(track.getNumberOfPoints() + 1); }