mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2025-01-10 17:11:56 +01:00
Fix gpx hr parsing and unit tests
This commit is contained in:
parent
8d24dfa7e4
commit
49750e31af
@ -18,6 +18,8 @@ package nodomain.freeyourgadget.gadgetbridge.model;
|
|||||||
|
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@ -111,6 +113,7 @@ public class GPSCoordinate {
|
|||||||
return new BigDecimal(value).setScale(8, RoundingMode.HALF_UP).toPlainString();
|
return new BigDecimal(value).setScale(8, RoundingMode.HALF_UP).toPlainString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "lon: " + formatLocation(longitude) + ", lat: " + formatLocation(latitude) + ", alt: " + formatLocation(altitude) + "m";
|
return "lon: " + formatLocation(longitude) + ", lat: " + formatLocation(latitude) + ", alt: " + formatLocation(altitude) + "m";
|
||||||
|
@ -226,7 +226,7 @@ public class GpxParser {
|
|||||||
while (eventType != XmlPullParser.END_TAG || !parser.getName().equals("extensions")) {
|
while (eventType != XmlPullParser.END_TAG || !parser.getName().equals("extensions")) {
|
||||||
if (parser.getEventType() == XmlPullParser.START_TAG) {
|
if (parser.getEventType() == XmlPullParser.START_TAG) {
|
||||||
switch (parser.getName()) {
|
switch (parser.getName()) {
|
||||||
case "gpxtpx:TrackPointExtension":
|
case "TrackPointExtension":
|
||||||
parseTrackPointExtensions(trackPointBuilder);
|
parseTrackPointExtensions(trackPointBuilder);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -237,11 +237,11 @@ public class GpxParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void parseTrackPointExtensions(final GpxTrackPoint.Builder trackPointBuilder) throws Exception {
|
private void parseTrackPointExtensions(final GpxTrackPoint.Builder trackPointBuilder) throws Exception {
|
||||||
while (eventType != XmlPullParser.END_TAG || !parser.getName().equals("gpxtpx:TrackPointExtension")) {
|
while (eventType != XmlPullParser.END_TAG || !parser.getName().equals("TrackPointExtension")) {
|
||||||
if (parser.getEventType() == XmlPullParser.START_TAG) {
|
if (parser.getEventType() == XmlPullParser.START_TAG) {
|
||||||
switch (parser.getName()) {
|
switch (parser.getName()) {
|
||||||
case "gpxtpx:hr":
|
case "hr":
|
||||||
trackPointBuilder.withHeartRate(Integer.parseInt(parseStringContent("gpxtpx:hr")));
|
trackPointBuilder.withHeartRate(Integer.parseInt(parseStringContent("hr")));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.util.gpx.model;
|
package nodomain.freeyourgadget.gadgetbridge.util.gpx.model;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -59,6 +61,12 @@ public class GpxTrackPoint extends GPSCoordinate {
|
|||||||
return Objects.hash(super.hashCode(), time, heartRate);
|
return Objects.hash(super.hashCode(), time, heartRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ts: " + time.getTime() + ", " + super.toString() + ", heartRate: " + heartRate;
|
||||||
|
}
|
||||||
|
|
||||||
public ActivityPoint toActivityPoint() {
|
public ActivityPoint toActivityPoint() {
|
||||||
final ActivityPoint activityPoint = new ActivityPoint();
|
final ActivityPoint activityPoint = new ActivityPoint();
|
||||||
activityPoint.setTime(time);
|
activityPoint.setTime(time);
|
||||||
@ -73,7 +81,7 @@ public class GpxTrackPoint extends GPSCoordinate {
|
|||||||
private double latitude;
|
private double latitude;
|
||||||
private double altitude;
|
private double altitude;
|
||||||
private Date time;
|
private Date time;
|
||||||
private int heartRate;
|
private int heartRate = -1;
|
||||||
|
|
||||||
public Builder withLongitude(final double longitude) {
|
public Builder withLongitude(final double longitude) {
|
||||||
this.longitude = longitude;
|
this.longitude = longitude;
|
||||||
|
@ -33,6 +33,10 @@ public class GPXParserTest extends TestBase {
|
|||||||
Assert.assertEquals(df.format(tp.getLatitude()), "44.15");
|
Assert.assertEquals(df.format(tp.getLatitude()), "44.15");
|
||||||
Assert.assertThat(df.format(tp.getAltitude()), anyOf(is("40"), is("46")));
|
Assert.assertThat(df.format(tp.getAltitude()), anyOf(is("40"), is("46")));
|
||||||
}
|
}
|
||||||
|
Assert.assertEquals(
|
||||||
|
new GpxTrackPoint(-68.200293, 44.152462, 40, new Date(1546300800000L)),
|
||||||
|
trackPoints.get(0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,13 +49,13 @@ public class GPXParserTest extends TestBase {
|
|||||||
Assert.assertEquals(2, gpxFile.getTracks().get(0).getTrackSegments().size());
|
Assert.assertEquals(2, gpxFile.getTracks().get(0).getTrackSegments().size());
|
||||||
|
|
||||||
final List<GpxTrackPoint> segment1 = new ArrayList<GpxTrackPoint>() {{
|
final List<GpxTrackPoint> segment1 = new ArrayList<GpxTrackPoint>() {{
|
||||||
add(new GpxTrackPoint(-8.2695876, -70.6666343, 790.0, new Date(1680969788000L)));
|
add(new GpxTrackPoint(-8.2695876, -70.6666343, 790.0, new Date(1680969788000L), 123));
|
||||||
add(new GpxTrackPoint(-8.2653274, -70.6670617, 296.0, new Date(1680970639000L)));
|
add(new GpxTrackPoint(-8.2653274, -70.6670617, 296.0, new Date(1680970639000L), 56));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
final List<GpxTrackPoint> segment2 = new ArrayList<GpxTrackPoint>() {{
|
final List<GpxTrackPoint> segment2 = new ArrayList<GpxTrackPoint>() {{
|
||||||
add(new GpxTrackPoint(-8.2653274, -70.6670617, 205.0, new Date(1680971684000L)));
|
add(new GpxTrackPoint(-8.2653274, -70.6670617, 205.0, new Date(1680971684000L), 85));
|
||||||
add(new GpxTrackPoint(-8.2695876, -70.6666343, 209.0, new Date(1680973017000L)));
|
add(new GpxTrackPoint(-8.2695876, -70.6666343, 209.0, new Date(1680973017000L), 150));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
Assert.assertEquals(gpxFile.getTracks().get(0).getTrackSegments().get(0).getTrackPoints(), segment1);
|
Assert.assertEquals(gpxFile.getTracks().get(0).getTrackSegments().get(0).getTrackPoints(), segment1);
|
||||||
@ -68,8 +72,8 @@ public class GPXParserTest extends TestBase {
|
|||||||
Assert.assertEquals(1, gpxFile.getTracks().get(0).getTrackSegments().size());
|
Assert.assertEquals(1, gpxFile.getTracks().get(0).getTrackSegments().size());
|
||||||
|
|
||||||
final List<GpxTrackPoint> segment1 = new ArrayList<GpxTrackPoint>() {{
|
final List<GpxTrackPoint> segment1 = new ArrayList<GpxTrackPoint>() {{
|
||||||
add(new GpxTrackPoint(-8.2695876, -70.6666343, 790.0, new Date(1680969788000L)));
|
add(new GpxTrackPoint(-8.2695876, -70.6666343, 790.0, new Date(1680969788000L), 123));
|
||||||
add(new GpxTrackPoint(-8.2653274, -70.6670617, 296.0, new Date(1680970639000L)));
|
add(new GpxTrackPoint(-8.2653274, -70.6670617, 296.0, new Date(1680970639000L), 56));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
Assert.assertEquals(gpxFile.getTracks().get(0).getTrackSegments().get(0).getTrackPoints(), segment1);
|
Assert.assertEquals(gpxFile.getTracks().get(0).getTrackSegments().get(0).getTrackPoints(), segment1);
|
||||||
|
Loading…
Reference in New Issue
Block a user