diff options
-rw-r--r-- | src/org/traccar/protocol/OsmAndProtocolDecoder.java | 16 | ||||
-rw-r--r-- | test/org/traccar/protocol/OsmAndProtocolDecoderTest.java | 3 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/org/traccar/protocol/OsmAndProtocolDecoder.java b/src/org/traccar/protocol/OsmAndProtocolDecoder.java index dba5e003b..50903f52a 100644 --- a/src/org/traccar/protocol/OsmAndProtocolDecoder.java +++ b/src/org/traccar/protocol/OsmAndProtocolDecoder.java @@ -53,7 +53,7 @@ public class OsmAndProtocolDecoder extends BaseProtocolDecoder { ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter("osmand"); // Identification - String id = params.get("id").get(0); + String id = params.get(params.containsKey("id") ? "id" : "deviceid").get(0); try { position.setDeviceId(getDataManager().getDeviceByImei(id).getId()); } catch(Exception error) { @@ -62,7 +62,11 @@ public class OsmAndProtocolDecoder extends BaseProtocolDecoder { // Decode position position.setValid(true); - position.setTime(new Date(Long.valueOf(params.get("timestamp").get(0)) * 1000)); + if (params.containsKey("timestamp")) { + position.setTime(new Date(Long.valueOf(params.get("timestamp").get(0)) * 1000)); + } else { + position.setTime(new Date()); + } position.setLatitude(Double.valueOf(params.get("lat").get(0))); position.setLongitude(Double.valueOf(params.get("lon").get(0))); @@ -74,6 +78,8 @@ public class OsmAndProtocolDecoder extends BaseProtocolDecoder { } if (params.containsKey("bearing")) { position.setCourse(Double.valueOf(params.get("bearing").get(0))); + } else if (params.containsKey("heading")) { + position.setCourse(Double.valueOf(params.get("heading").get(0))); } else { position.setCourse(0.0); } @@ -85,6 +91,12 @@ public class OsmAndProtocolDecoder extends BaseProtocolDecoder { if (params.containsKey("hdop")) { extendedInfo.set("hdop", params.get("hdop").get(0)); } + if (params.containsKey("vacc")) { + extendedInfo.set("vacc", params.get("vacc").get(0)); + } + if (params.containsKey("hacc")) { + extendedInfo.set("hacc", params.get("hacc").get(0)); + } position.setExtendedInfo(extendedInfo.toString()); diff --git a/test/org/traccar/protocol/OsmAndProtocolDecoderTest.java b/test/org/traccar/protocol/OsmAndProtocolDecoderTest.java index 9fb44b2ff..2a5b1baf0 100644 --- a/test/org/traccar/protocol/OsmAndProtocolDecoderTest.java +++ b/test/org/traccar/protocol/OsmAndProtocolDecoderTest.java @@ -19,6 +19,9 @@ public class OsmAndProtocolDecoderTest { assertNotNull(decoder.decode(null, null, new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/?id=123456×tamp=1377177267&lat=60.0&lon=30.0"))); + + assertNotNull(decoder.decode(null, null, new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, + "/?lat=60.0&lon=30.0&speed=0.0&heading=0.0&vacc=0&hacc=0&altitude=0&deviceid=123456"))); } |