forked from upstream-mirrors/OpenTracks
Add Track Writer test.
Fix total time bug in stats activity. Fix track segments on the map overlay.
This commit is contained in:
@@ -165,11 +165,12 @@ public class MyTracksMap extends MapActivity
|
|||||||
final int idColumnIdx =
|
final int idColumnIdx =
|
||||||
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
|
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
// TODO We should update the samplingFrequency.
|
setSamplingFrequency(selectedTrack);
|
||||||
do {
|
do {
|
||||||
if (i % samplingFrequency == 0) {
|
Location location = providerUtils.createLocation(cursor);
|
||||||
|
if (i % samplingFrequency == 0 ||
|
||||||
|
MyTracksUtils.isValidLocation(location)) {
|
||||||
lastSeenLocationId = cursor.getLong(idColumnIdx);
|
lastSeenLocationId = cursor.getLong(idColumnIdx);
|
||||||
Location location = providerUtils.createLocation(cursor);
|
|
||||||
if (location != null) {
|
if (location != null) {
|
||||||
mapOverlay.addLocation(location);
|
mapOverlay.addLocation(location);
|
||||||
}
|
}
|
||||||
@@ -199,16 +200,12 @@ public class MyTracksMap extends MapActivity
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Cursor cursor = null;
|
Cursor cursor = null;
|
||||||
|
long totalLocations = selectedTrack.getStopId() -
|
||||||
|
selectedTrack.getStartId();
|
||||||
|
|
||||||
mapOverlay.clearPoints();
|
mapOverlay.clearPoints();
|
||||||
lastSeenLocationId = selectedTrack.getStartId();
|
lastSeenLocationId = selectedTrack.getStartId();
|
||||||
long totalLocations = selectedTrack.getStopId()
|
setSamplingFrequency(selectedTrack);
|
||||||
- selectedTrack.getStartId();
|
|
||||||
|
|
||||||
// Limit the number of map points readings.
|
|
||||||
samplingFrequency =
|
|
||||||
(int) (1 +
|
|
||||||
totalLocations / MyTracksConstants.TARGET_DISPLAYED_TRACK_POINTS);
|
|
||||||
Log.i(MyTracksConstants.TAG, "Sampling locations: " + samplingFrequency);
|
|
||||||
int bufferSize = 1024;
|
int bufferSize = 1024;
|
||||||
try {
|
try {
|
||||||
int points = 0;
|
int points = 0;
|
||||||
@@ -1041,4 +1038,15 @@ public class MyTracksMap extends MapActivity
|
|||||||
public void onAccuracyChanged(Sensor s, int accuracy) {
|
public void onAccuracyChanged(Sensor s, int accuracy) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setSamplingFrequency(Track track) {
|
||||||
|
long totalLocations = track.getStopId() - track.getStartId();
|
||||||
|
|
||||||
|
// Limit the number of map points readings.
|
||||||
|
samplingFrequency =
|
||||||
|
(int) (1 +
|
||||||
|
totalLocations / MyTracksConstants.TARGET_DISPLAYED_TRACK_POINTS);
|
||||||
|
Log.i(MyTracksConstants.TAG, "Sampling locations: " + samplingFrequency);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -353,6 +353,11 @@ public class StatsActivity extends Activity
|
|||||||
}
|
}
|
||||||
|
|
||||||
track = providerUtils.getTrack(selectedTrackId);
|
track = providerUtils.getTrack(selectedTrackId);
|
||||||
|
startTime = track.getStatistics().getStartTime();
|
||||||
|
if(!selectedTrackIsRecording()) {
|
||||||
|
utils.setTime(R.id.total_time_register,
|
||||||
|
track.getStatistics().getTotalTime());
|
||||||
|
}
|
||||||
utils.setAllStats(track.getStatistics());
|
utils.setAllStats(track.getStatistics());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/MyTracks"/>
|
|
||||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="src" path="gen"/>
|
<classpathentry kind="src" path="gen"/>
|
||||||
<classpathentry kind="lib" path="libs/easymock.jar"/>
|
<classpathentry kind="lib" path="libs/easymock.jar"/>
|
||||||
|
<classpathentry combineaccessrules="false" kind="src" path="/MyTracks-opensource"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<name>MyTracksTest</name>
|
<name>MyTracksTest</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
<project>MyTracks</project>
|
<project>MyTracks-opensource</project>
|
||||||
</projects>
|
</projects>
|
||||||
<buildSpec>
|
<buildSpec>
|
||||||
<buildCommand>
|
<buildCommand>
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
// Copyright 2010 Google Inc. All Rights Reserved.
|
||||||
|
package com.google.android.apps.mytracks.io;
|
||||||
|
|
||||||
|
import android.location.Location;
|
||||||
|
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for the GPX track exporter.
|
||||||
|
*
|
||||||
|
* @author Rodrigo Damazio
|
||||||
|
*/
|
||||||
|
public class TcxTrackWriterTest extends TrackFormatWriterTest {
|
||||||
|
|
||||||
|
public void testXmlOutput() throws Exception {
|
||||||
|
TrackFormatWriter writer = new TcxTrackWriter();
|
||||||
|
String result = writeTrack(writer);
|
||||||
|
Document doc = parseXmlDocument(result);
|
||||||
|
|
||||||
|
Element root = getChildElement(doc, "TrainingCenterDatabase");
|
||||||
|
Element activitiesTag = getChildElement(root, "Activities");
|
||||||
|
Element activityTag = getChildElement(activitiesTag, "Activity");
|
||||||
|
Element lapTag = getChildElement(activityTag, "Lap");
|
||||||
|
|
||||||
|
List<Element> segmentTags = getChildElements(lapTag, "Track", 2);
|
||||||
|
Element segment1Tag = segmentTags.get(0);
|
||||||
|
Element segment2Tag = segmentTags.get(1);
|
||||||
|
List<Element> seg1PointTags = getChildElements(segment1Tag, "Trackpoint", 2);
|
||||||
|
List<Element> seg2PointTags = getChildElements(segment2Tag, "Trackpoint", 2);
|
||||||
|
assertTagsMatchPoints(seg1PointTags, location1, location2);
|
||||||
|
assertTagsMatchPoints(seg2PointTags, location3, location4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asserts that the given tags describe the given points, in the same order.
|
||||||
|
*/
|
||||||
|
protected void assertTagsMatchPoints(List<Element> tags, Location... locs) {
|
||||||
|
assertEquals(locs.length, tags.size());
|
||||||
|
for (int i = 0; i < locs.length; i++) {
|
||||||
|
Element tag = tags.get(i);
|
||||||
|
Location loc = locs[i];
|
||||||
|
|
||||||
|
assertTagMatchesLocation(tag, loc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asserts that the given tag describes the given location.
|
||||||
|
*/
|
||||||
|
private void assertTagMatchesLocation(Element tag, Location loc) {
|
||||||
|
Element posTag = getChildElement(tag, "Position");
|
||||||
|
assertEquals(Double.toString(loc.getLatitude()),
|
||||||
|
getChildTextValue(posTag, "LatitudeDegrees"));
|
||||||
|
assertEquals(Double.toString(loc.getLongitude()),
|
||||||
|
getChildTextValue(posTag, "LongitudeDegrees"));
|
||||||
|
assertEquals(
|
||||||
|
TcxTrackWriter.TIMESTAMP_FORMAT.format(new Date(loc.getTime())),
|
||||||
|
getChildTextValue(tag, "Time"));
|
||||||
|
assertEquals(Double.toString(loc.getAltitude()),
|
||||||
|
getChildTextValue(tag, "AltitudeMeters"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user