diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java b/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java index aa7ff86..1657423 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/MainActivity.java @@ -16,8 +16,6 @@ import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import android.util.Log; -import android.view.DragEvent; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; @@ -44,9 +42,7 @@ import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider; import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay; import java.io.File; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Observable; import java.util.Observer; @@ -222,7 +218,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu private void addMarker() { - WayPointLocation loc = serviceGps.addPointObject(); + WayPointLocation loc = serviceGps.addPointObjectTrail(); GeoPoint gp = new GeoPoint(loc.getLatitude(), loc.getLongitude(), loc.getAltitude()); addMarker(gp, loc.isFound()); } @@ -239,7 +235,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu public boolean onMarkerClick(Marker marker, MapView mapView) { if (serviceGps.isDogActivated()) { GeoPoint gp = marker.getPosition(); - WayPointLocation wpl = serviceGps.getPoint(gp.getLatitude(), gp.getLongitude()); + WayPointLocation wpl = serviceGps.getPointTrail(gp.getLatitude(), gp.getLongitude()); if (wpl != null) { wpl.setFound(); marker.setIcon(getResources().getDrawable(R.drawable.ic_marker_blue)); @@ -254,7 +250,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu private void markAsFound() { List wpls = serviceGps.foundNearObjects(); - for (WayPointLocation wpl: wpls) { + for (WayPointLocation wpl : wpls) { if (wpl != null && !wpl.isFound()) { wpl.setFound(); for (Overlay o : map.getOverlays()) { @@ -268,6 +264,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu } } } + serviceGps.addPointObjectDog(); break; } } @@ -394,7 +391,10 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu updateDogTrace(); updateTrailTrace(); calculTrailDistance(); - for (MyLocation loc: serviceGps.getListGeoPointObjects()) { + for (MyLocation loc: serviceGps.getListGeoPointObjectsTrail()) { + addMarker(new GeoPoint(loc.getLatitude(), loc.getLongitude(), loc.getAltitude()), false); + } + for (MyLocation loc: serviceGps.getListGeoPointObjectsDog()) { boolean isFound = false; if (loc instanceof WayPointLocation) { isFound = ((WayPointLocation) loc).isFound(); @@ -580,7 +580,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu } private String getTextTraceur() { - return String.format("Distance: %,dm\t\t\t\t\t\t\t\tObjets: %d", ((int) distance), serviceGps.getListGeoPointObjects().size()); + return String.format("Distance: %,dm\t\t\t\t\t\t\t\tObjets: %d", ((int) distance), serviceGps.getListGeoPointObjectsTrail().size()); } private String getTextDog() { @@ -598,12 +598,12 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu text = String.format("Time: %02d:%02d:%02d", h, m, s); int nbFoundObject = 0; - for (MyLocation loc: serviceGps.getListGeoPointObjects()) { + for (MyLocation loc: serviceGps.getListGeoPointObjectsDog()) { if (loc instanceof WayPointLocation && ((WayPointLocation) loc).isFound()) { nbFoundObject++; } } - text += "\t\t\t\t\t\t\t\tObjets: "+nbFoundObject+"/"+serviceGps.getListGeoPointObjects().size(); + text += "\t\t\t\t\t\t\t\tObjets: "+nbFoundObject+"/"+serviceGps.getListGeoPointObjectsTrail().size(); } return text; } diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/models/Traces.java b/app/src/main/java/fr/chteufleur/mytrackingdog/models/Traces.java index a056c4c..bd96cb0 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/models/Traces.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/models/Traces.java @@ -12,7 +12,8 @@ public class Traces { private MyLocationArray listPointTraceur = new MyLocationArray(); private MyLocationArray listPointDog = new MyLocationArray(); - private MyLocationArray listPointObjects = new MyLocationArray(); + private MyLocationArray listPointObjectsTrail = new MyLocationArray(); + private MyLocationArray listPointObjectsDog = new MyLocationArray(); private boolean traceurActivated = false; private boolean dogActivated = false; @@ -24,12 +25,24 @@ public class Traces { public void addPointDog(MyLocation point) { listPointDog.add(point); } - public void addPointObject(WayPointLocation point) { - listPointObjects.add(point); + public void addPointObjectTrail(WayPointLocation point) { + listPointObjectsTrail.add(point); } - public WayPointLocation getPoint(double lat, double lon) { + public void addPointObjectDog(WayPointLocation point) { + listPointObjectsDog.add(point); + } + public WayPointLocation getPointObjectTrail(double lat, double lon) { WayPointLocation ret = null; - for (MyLocation ml: listPointObjects) { + for (MyLocation ml: listPointObjectsTrail) { + if (ml.isEquals(lat, lon) && ml instanceof WayPointLocation) { + ret = (WayPointLocation) ml; + } + } + return ret; + } + public WayPointLocation getPointObjectDog(double lat, double lon) { + WayPointLocation ret = null; + for (MyLocation ml: listPointObjectsDog) { if (ml.isEquals(lat, lon) && ml instanceof WayPointLocation) { ret = (WayPointLocation) ml; } @@ -49,8 +62,11 @@ public class Traces { public MyLocationArray getListPointDog() { return listPointDog; } - public MyLocationArray getListPointObjects() { - return listPointObjects; + public MyLocationArray getListPointObjectsTrail() { + return listPointObjectsTrail; + } + public MyLocationArray getListPointObjectsDog() { + return listPointObjectsDog; } public void toggleTraceurActivation() { diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceGps.java b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceGps.java index b29a70e..5403cea 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceGps.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceGps.java @@ -147,11 +147,21 @@ public class ServiceGps extends Observable implements IServiceGps, LocationListe return traces.isDogActivated(); } - public WayPointLocation addPointObject() { + public WayPointLocation addPointObjectTrail() { WayPointLocation wpl = null; if (currentLocation != null) { wpl = new WayPointLocation(currentLocation); - traces.addPointObject(wpl); + traces.addPointObjectTrail(wpl); + } + return wpl; + } + + public WayPointLocation addPointObjectDog() { + WayPointLocation wpl = null; + if (currentLocation != null) { + wpl = new WayPointLocation(currentLocation); + wpl.setFound(); + traces.addPointObjectDog(wpl); } return wpl; } @@ -162,17 +172,23 @@ public class ServiceGps extends Observable implements IServiceGps, LocationListe public MyLocationArray getListGeoPointDog() { return traces.getListPointDog(); } - public MyLocationArray getListGeoPointObjects() { - return traces.getListPointObjects(); + public MyLocationArray getListGeoPointObjectsTrail() { + return traces.getListPointObjectsTrail(); } - public WayPointLocation getPoint(double lat, double lon) { - return traces.getPoint(lat, lon); + public MyLocationArray getListGeoPointObjectsDog() { + return traces.getListPointObjectsDog(); + } + public WayPointLocation getPointTrail(double lat, double lon) { + return traces.getPointObjectTrail(lat, lon); + } + public WayPointLocation getPointDog(double lat, double lon) { + return traces.getPointObjectDog(lat, lon); } public List foundNearObjects() { List ret = new ArrayList<>(); MyLocation curLoc = currentLocation; - for (MyLocation ml: getListGeoPointObjects()) { + for (MyLocation ml: getListGeoPointObjectsTrail()) { if (curLoc.distanceTo(ml) < 10 && ml instanceof WayPointLocation) { ret.add((WayPointLocation) ml); } @@ -191,7 +207,7 @@ public class ServiceGps extends Observable implements IServiceGps, LocationListe public boolean exportDogTraceToGpx() { File file = new File(getFileName(Gpx.DOG_TRACE_NAME)); ExportGpx exportGpx = new ExportGpx(file, Gpx.DOG_TRACE_NAME); - exportGpx.setObjects(traces.getListPointObjects()); + exportGpx.setObjects(traces.getListPointObjectsDog()); exportGpx.setTrace(traces.getListPointDog()); return exportGpx.export(); } @@ -199,7 +215,7 @@ public class ServiceGps extends Observable implements IServiceGps, LocationListe public boolean exportTrailTraceToGpx() { File file = new File(getFileName(Gpx.TRAIL_TRACE_NAME)); ExportGpx exportGpx = new ExportGpx(file, Gpx.TRAIL_TRACE_NAME); - exportGpx.setObjects(traces.getListPointObjects()); + exportGpx.setObjects(traces.getListPointObjectsTrail()); exportGpx.setTrace(traces.getListPointTraceur()); return exportGpx.export(); } @@ -212,7 +228,11 @@ public class ServiceGps extends Observable implements IServiceGps, LocationListe for (int i=0; i