From e87c3c7783a5ccc82ed4456ce16440c3e6a513fe Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 31 Aug 2017 11:42:15 +1200 Subject: [PATCH] Report location accuracy --- .../java/org/traccar/client/DatabaseHelper.java | 5 ++++- app/src/main/java/org/traccar/client/Position.java | 14 ++++++++++++++ .../java/org/traccar/client/ProtocolFormatter.java | 1 + .../org/traccar/client/DatabaseHelperTest.java | 3 --- .../org/traccar/client/ProtocolFormatterTest.java | 6 +++--- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/traccar/client/DatabaseHelper.java b/app/src/main/java/org/traccar/client/DatabaseHelper.java index f549c20..55f1bb0 100644 --- a/app/src/main/java/org/traccar/client/DatabaseHelper.java +++ b/app/src/main/java/org/traccar/client/DatabaseHelper.java @@ -27,7 +27,7 @@ import java.util.Date; public class DatabaseHelper extends SQLiteOpenHelper { - public static final int DATABASE_VERSION = 1; + public static final int DATABASE_VERSION = 2; public static final String DATABASE_NAME = "traccar.db"; public interface DatabaseHandler { @@ -79,6 +79,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { "altitude REAL," + "speed REAL," + "course REAL," + + "accuracy REAL," + "battery REAL)"); } @@ -97,6 +98,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { values.put("altitude", position.getAltitude()); values.put("speed", position.getSpeed()); values.put("course", position.getCourse()); + values.put("accuracy", position.getCourse()); values.put("battery", position.getBattery()); db.insertOrThrow("position", null, values); @@ -129,6 +131,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { position.setAltitude(cursor.getDouble(cursor.getColumnIndex("altitude"))); position.setSpeed(cursor.getDouble(cursor.getColumnIndex("speed"))); position.setCourse(cursor.getDouble(cursor.getColumnIndex("course"))); + position.setAccuracy(cursor.getDouble(cursor.getColumnIndex("accuracy"))); position.setBattery(cursor.getDouble(cursor.getColumnIndex("battery"))); } else { diff --git a/app/src/main/java/org/traccar/client/Position.java b/app/src/main/java/org/traccar/client/Position.java index 7f1da5f..3e15e8c 100644 --- a/app/src/main/java/org/traccar/client/Position.java +++ b/app/src/main/java/org/traccar/client/Position.java @@ -16,6 +16,7 @@ package org.traccar.client; import android.location.Location; +import android.location.LocationManager; import java.util.Date; @@ -32,6 +33,9 @@ public class Position { altitude = location.getAltitude(); speed = location.getSpeed() * 1.943844; // speed in knots course = location.getBearing(); + if (location.getProvider() != null && !location.getProvider().equals(LocationManager.GPS_PROVIDER)) { + accuracy = location.getAccuracy(); + } this.battery = battery; } @@ -115,6 +119,16 @@ public class Position { this.course = course; } + private double accuracy; + + public double getAccuracy() { + return accuracy; + } + + public void setAccuracy(double accuracy) { + this.accuracy = accuracy; + } + private double battery; public double getBattery() { diff --git a/app/src/main/java/org/traccar/client/ProtocolFormatter.java b/app/src/main/java/org/traccar/client/ProtocolFormatter.java index cd85f31..32a38cc 100644 --- a/app/src/main/java/org/traccar/client/ProtocolFormatter.java +++ b/app/src/main/java/org/traccar/client/ProtocolFormatter.java @@ -33,6 +33,7 @@ public class ProtocolFormatter { .appendQueryParameter("speed", String.valueOf(position.getSpeed())) .appendQueryParameter("bearing", String.valueOf(position.getCourse())) .appendQueryParameter("altitude", String.valueOf(position.getAltitude())) + .appendQueryParameter("accuracy", String.valueOf(position.getAccuracy())) .appendQueryParameter("batt", String.valueOf(position.getBattery())); if (alarm != null) { diff --git a/app/src/test/java/org/traccar/client/DatabaseHelperTest.java b/app/src/test/java/org/traccar/client/DatabaseHelperTest.java index 1bb47fc..aea07d8 100644 --- a/app/src/test/java/org/traccar/client/DatabaseHelperTest.java +++ b/app/src/test/java/org/traccar/client/DatabaseHelperTest.java @@ -1,7 +1,6 @@ package org.traccar.client; -import android.database.sqlite.SQLiteDatabase; import android.location.Location; import org.junit.Test; @@ -24,8 +23,6 @@ public class DatabaseHelperTest { DatabaseHelper databaseHelper = new DatabaseHelper(RuntimeEnvironment.application); - SQLiteDatabase db = databaseHelper.getWritableDatabase(); - Position position = new Position("123456789012345", new Location("gps"), 0); position.setTime(new Date(0)); diff --git a/app/src/test/java/org/traccar/client/ProtocolFormatterTest.java b/app/src/test/java/org/traccar/client/ProtocolFormatterTest.java index a8a1b84..3f9f4f1 100644 --- a/app/src/test/java/org/traccar/client/ProtocolFormatterTest.java +++ b/app/src/test/java/org/traccar/client/ProtocolFormatterTest.java @@ -23,7 +23,7 @@ public class ProtocolFormatterTest { position.setTime(new Date(0)); String url = ProtocolFormatter.formatRequest("http://localhost:5055", position); - assertEquals("http://localhost:5055?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&batt=0.0", url); + assertEquals("http://localhost:5055?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0", url); } @Test @@ -33,7 +33,7 @@ public class ProtocolFormatterTest { position.setTime(new Date(0)); String url = ProtocolFormatter.formatRequest("http://localhost:8888/path", position); - assertEquals("http://localhost:8888/path?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&batt=0.0", url); + assertEquals("http://localhost:8888/path?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0", url); } @Test @@ -43,6 +43,6 @@ public class ProtocolFormatterTest { position.setTime(new Date(0)); String url = ProtocolFormatter.formatRequest("http://localhost:5055/path", position, "alert message"); - assertEquals("http://localhost:5055/path?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&batt=0.0&alarm=alert%20message", url); + assertEquals("http://localhost:5055/path?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0&alarm=alert%20message", url); } }