Update TrackRecordingService to use MyTracksProviderUtils.

This commit is contained in:
Jimmy Shih
2012-07-17 17:50:29 -07:00
parent c1dd6eadad
commit 83082b9ef8
@@ -27,11 +27,9 @@ import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Sensor; import com.google.android.apps.mytracks.content.Sensor;
import com.google.android.apps.mytracks.content.Sensor.SensorDataSet; import com.google.android.apps.mytracks.content.Sensor.SensorDataSet;
import com.google.android.apps.mytracks.content.Track; import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.content.TracksColumns;
import com.google.android.apps.mytracks.content.Waypoint; import com.google.android.apps.mytracks.content.Waypoint;
import com.google.android.apps.mytracks.content.WaypointCreationRequest; import com.google.android.apps.mytracks.content.WaypointCreationRequest;
import com.google.android.apps.mytracks.content.WaypointCreationRequest.WaypointType; import com.google.android.apps.mytracks.content.WaypointCreationRequest.WaypointType;
import com.google.android.apps.mytracks.content.WaypointsColumns;
import com.google.android.apps.mytracks.services.sensors.SensorManager; import com.google.android.apps.mytracks.services.sensors.SensorManager;
import com.google.android.apps.mytracks.services.sensors.SensorManagerFactory; import com.google.android.apps.mytracks.services.sensors.SensorManagerFactory;
import com.google.android.apps.mytracks.services.tasks.PeriodicTaskExecutor; import com.google.android.apps.mytracks.services.tasks.PeriodicTaskExecutor;
@@ -49,7 +47,6 @@ import com.google.common.annotations.VisibleForTesting;
import android.app.Notification; import android.app.Notification;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Service; import android.app.Service;
import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
@@ -836,35 +833,17 @@ public class TrackRecordingService extends Service {
int pointId = Integer.parseInt(pointUri.getLastPathSegment()); int pointId = Integer.parseInt(pointUri.getLastPathSegment());
// Update the current track: // Update the current track:
if (lastRecordedLocation != null if (lastRecordedLocation != null && lastRecordedLocation.getLatitude() < 90) {
&& lastRecordedLocation.getLatitude() < 90) { TripStatistics tripStatistics = statsBuilder.getStatistics();
ContentValues values = new ContentValues(); tripStatistics.setStopTime(System.currentTimeMillis());
TripStatistics stats = statsBuilder.getStatistics();
if (recordingTrack.getStartId() < 0) { if (recordingTrack.getStartId() < 0) {
values.put(TracksColumns.STARTID, pointId);
recordingTrack.setStartId(pointId); recordingTrack.setStartId(pointId);
} }
values.put(TracksColumns.STOPID, pointId); recordingTrack.setStopId(pointId);
values.put(TracksColumns.STOPTIME, System.currentTimeMillis()); recordingTrack.setNumberOfPoints(recordingTrack.getNumberOfPoints() + 1);
values.put(TracksColumns.NUMPOINTS, recordingTrack.setTripStatistics(tripStatistics);
recordingTrack.getNumberOfPoints() + 1); providerUtils.updateTrack(recordingTrack);
values.put(TracksColumns.MINLAT, stats.getBottom());
values.put(TracksColumns.MAXLAT, stats.getTop());
values.put(TracksColumns.MINLON, stats.getLeft());
values.put(TracksColumns.MAXLON, stats.getRight());
values.put(TracksColumns.TOTALDISTANCE, stats.getTotalDistance());
values.put(TracksColumns.TOTALTIME, stats.getTotalTime());
values.put(TracksColumns.MOVINGTIME, stats.getMovingTime());
values.put(TracksColumns.AVGSPEED, stats.getAverageSpeed());
values.put(TracksColumns.AVGMOVINGSPEED, stats.getAverageMovingSpeed());
values.put(TracksColumns.MAXSPEED, stats.getMaxSpeed());
values.put(TracksColumns.MINELEVATION, stats.getMinElevation());
values.put(TracksColumns.MAXELEVATION, stats.getMaxElevation());
values.put(TracksColumns.ELEVATIONGAIN, stats.getTotalElevationGain());
values.put(TracksColumns.MINGRADE, stats.getMinGrade());
values.put(TracksColumns.MAXGRADE, stats.getMaxGrade());
getContentResolver().update(TracksColumns.CONTENT_URI,
values, "_id=" + recordingTrack.getId(), null);
updateCurrentWaypoint(); updateCurrentWaypoint();
} }
} catch (SQLiteException e) { } catch (SQLiteException e) {
@@ -882,30 +861,14 @@ public class TrackRecordingService extends Service {
private void updateCurrentWaypoint() { private void updateCurrentWaypoint() {
if (currentWaypointId >= 0) { if (currentWaypointId >= 0) {
ContentValues values = new ContentValues(); Waypoint waypoint = providerUtils.getWaypoint(currentWaypointId);
TripStatistics waypointStats = waypointStatsBuilder.getStatistics(); if (waypoint != null) {
values.put(WaypointsColumns.STARTTIME, waypointStats.getStartTime()); waypoint.setLength(length);
values.put(WaypointsColumns.LENGTH, length); waypoint.setDuration(
values.put(WaypointsColumns.DURATION, System.currentTimeMillis() System.currentTimeMillis() - statsBuilder.getStatistics().getStartTime());
- statsBuilder.getStatistics().getStartTime()); waypoint.setTripStatistics(waypointStatsBuilder.getStatistics());
values.put(WaypointsColumns.TOTALDISTANCE, providerUtils.updateWaypoint(waypoint);
waypointStats.getTotalDistance()); }
values.put(WaypointsColumns.TOTALTIME, waypointStats.getTotalTime());
values.put(WaypointsColumns.MOVINGTIME, waypointStats.getMovingTime());
values.put(WaypointsColumns.AVGSPEED, waypointStats.getAverageSpeed());
values.put(WaypointsColumns.AVGMOVINGSPEED,
waypointStats.getAverageMovingSpeed());
values.put(WaypointsColumns.MAXSPEED, waypointStats.getMaxSpeed());
values.put(WaypointsColumns.MINELEVATION,
waypointStats.getMinElevation());
values.put(WaypointsColumns.MAXELEVATION,
waypointStats.getMaxElevation());
values.put(WaypointsColumns.ELEVATIONGAIN,
waypointStats.getTotalElevationGain());
values.put(WaypointsColumns.MINGRADE, waypointStats.getMinGrade());
values.put(WaypointsColumns.MAXGRADE, waypointStats.getMaxGrade());
getContentResolver().update(WaypointsColumns.CONTENT_URI,
values, "_id=" + currentWaypointId, null);
} }
} }
@@ -1031,19 +994,14 @@ public class TrackRecordingService extends Service {
isRecording = false; isRecording = false;
Track recordedTrack = providerUtils.getTrack(recordingTrackId); Track recordedTrack = providerUtils.getTrack(recordingTrackId);
if (recordedTrack != null) { if (recordedTrack != null) {
TripStatistics stats = recordedTrack.getTripStatistics(); long lastRecordedLocationId = providerUtils.getLastLocationId(recordingTrackId);
stats.setStopTime(System.currentTimeMillis());
stats.setTotalTime(stats.getStopTime() - stats.getStartTime());
long lastRecordedLocationId =
providerUtils.getLastLocationId(recordingTrackId);
ContentValues values = new ContentValues();
if (lastRecordedLocationId >= 0 && recordedTrack.getStopId() >= 0) { if (lastRecordedLocationId >= 0 && recordedTrack.getStopId() >= 0) {
values.put(TracksColumns.STOPID, lastRecordedLocationId); recordedTrack.setStopId(lastRecordedLocationId);
} }
values.put(TracksColumns.STOPTIME, stats.getStopTime()); TripStatistics tripStatistics = recordedTrack.getTripStatistics();
values.put(TracksColumns.TOTALTIME, stats.getTotalTime()); tripStatistics.setStopTime(System.currentTimeMillis());
getContentResolver().update(TracksColumns.CONTENT_URI, values, tripStatistics.setTotalTime(tripStatistics.getStopTime() - tripStatistics.getStartTime());
"_id=" + recordedTrack.getId(), null); providerUtils.updateTrack(recordedTrack);
} }
showNotification(); showNotification();
long recordedTrackId = recordingTrackId; long recordedTrackId = recordingTrackId;