diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MyWeather.java b/app/src/main/java/de/apps4ics/mountainnavigation/MyWeather.java
index a03c4b7..3b9cac4 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/MyWeather.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/MyWeather.java
@@ -100,8 +100,6 @@
}
weatherDesc = weather.currentCondition.getDescr();
weatherTitle = weather.currentCondition.getCondition();
- Log.d(MainActivity.TAG, "desc: " + weatherDesc + ", title: " + weatherTitle);
- //weather.currentCondition.getWeatherCode().getLabel(null);
minTemp = weather.temperature.getMinTemp() > 0 ? weather.temperature.getMinTemp() : -1;
maxTemp = weather.temperature.getMaxTemp() > 0 ? weather.temperature.getMaxTemp() : -1;
sunrise = weather.location.getSunrise() > 0 ? weather.location.getSunrise() : -1;
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/GetRoadFromOsm.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/GetRoadFromOsm.java
new file mode 100644
index 0000000..d73b283
--- /dev/null
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/GetRoadFromOsm.java
@@ -0,0 +1,39 @@
+/**
+ * This file is part of MountainNavigation.
+ *
+ * MountainNavigation is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * MountainNavigation is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with MountainNavigation. If not, see .
+ *
+ * @copyright Copyright (c) 2016 Vinzenz Rosenkanz
+ *
+ * @author Vinzenz Rosenkranz
+ */
+
+package de.apps4ics.mountainnavigation.handlers;
+
+import android.os.AsyncTask;
+
+import org.osmdroid.bonuspack.routing.Road;
+import org.osmdroid.util.GeoPoint;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class GetRoadFromOsm extends AsyncTask {
+ @Override
+ protected Road doInBackground(GeoPoint... params) {
+ ArrayList waypoints = new ArrayList<>(Arrays.asList(params));
+ Road road = PoiHandler.getRoadManager().getRoad(waypoints);
+ return road;
+ }
+}
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java
index d1f5211..cd24fd3 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java
@@ -23,8 +23,6 @@
import android.app.Activity;
import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.Context;
import android.content.DialogInterface;
@@ -41,7 +39,6 @@
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
-import android.os.Bundle;
import android.os.Vibrator;
import android.provider.MediaStore;
import android.provider.Settings;
@@ -50,7 +47,6 @@
import android.view.Gravity;
import org.osmdroid.api.IMapController;
-import org.osmdroid.bonuspack.location.NominatimPOIProvider;
import org.osmdroid.bonuspack.location.POI;
import org.osmdroid.bonuspack.overlays.MapEventsOverlay;
import org.osmdroid.bonuspack.overlays.MapEventsReceiver;
@@ -73,14 +69,12 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.R;
-import de.apps4ics.mountainnavigation.adapters.ImageListAdapter;
import de.apps4ics.mountainnavigation.overlays.ImageDialogItemizedIconOverlay;
import de.apps4ics.mountainnavigation.overlays.MapDialogItemizedIconOverlay;
import de.apps4ics.mountainnavigation.pois.AddBreakpointDialog;
@@ -97,12 +91,12 @@
import de.apps4ics.mountainnavigation.pois.Options;
import de.apps4ics.mountainnavigation.pois.Path;
import de.apps4ics.mountainnavigation.pois.Poi;
-import de.apps4ics.mountainnavigation.pois.TrashBin;
import de.apps4ics.mountainnavigation.pois.Types;
import de.apps4ics.mountainnavigation.pois.Wifi;
public class PoiHandler {
private static List[] poiMarkers;
+ private static RoadManager roadManager;
private Map> pois;
private Resources res;
private MapView mapView;
@@ -138,6 +132,8 @@
this.res = res;
this.mapView = mapView;
+ roadManager = new OSRMRoadManager(getContext());
+
v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
try {
@@ -231,6 +227,8 @@
return entries;
}
+ public static RoadManager getRoadManager() { return roadManager; }
+
public static void addPoiMarker(int type, Marker marker) {
poiMarkers[type].add(marker);
}
@@ -450,8 +448,6 @@
@Override
public void onClick(DialogInterface dialog, int which) {
ArrayList pathMarkers = MainActivity.getPathMarkers();
-
- RoadManager roadManager = new OSRMRoadManager(getContext());
ArrayList waypoints = new ArrayList<>();
DbGeoPoint current = null;
DbGeoPoint last = null;
@@ -462,11 +458,10 @@
long rowId = 0;
String uid = pathMarkers.get(i).getUid();
if(uid != null && !uid.equals("")){
- String[] uids = pathMarkers.get(i).getUid().split("_"); //format is 123456789_4
- String timeStr = uids[0];
- String idStr = uids[1];
+ String timeStr = pathMarkers.get(i).getUid();
+ String idStr = pathMarkers.get(i).getTitle();
if(timeStr != null && !timeStr.equals("")) time = Long.parseLong(timeStr) / 1000;
- if(idStr != null && !idStr.equals("")) rowId = Long.parseLong(uids[1]);
+ if(idStr != null && !idStr.equals("")) rowId = Long.parseLong(idStr);
}
current = new DbGeoPoint(gp.getLatitude(), gp.getLongitude(), gp.getAltitude(), time);
@@ -480,11 +475,14 @@
}
last = current;
}
- //TODO CORE disabled network calls for now
- /*Road road = roadManager.getRoad(waypoints);
- Polyline line = RoadManager.buildRoadOverlay(road, getContext());
- MainActivity.getMapView().getOverlays().add(line);
- MainActivity.getMapView().invalidate();*/
+ try {
+ Road road = new GetRoadFromOsm().execute(waypoints.toArray(new GeoPoint[waypoints.size()])).get();
+ Polyline line = RoadManager.buildRoadOverlay(road, getContext());
+ MainActivity.getMapView().getOverlays().add(line);
+ MainActivity.getMapView().invalidate();
+ } catch (InterruptedException e) {
+ } catch (ExecutionException e) {
+ }
MainActivity.setPathMarkers(new ArrayList());
}
})
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/overlays/MapDialogItemizedIconOverlay.java b/app/src/main/java/de/apps4ics/mountainnavigation/overlays/MapDialogItemizedIconOverlay.java
index 742eff2..581079f 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/overlays/MapDialogItemizedIconOverlay.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/overlays/MapDialogItemizedIconOverlay.java
@@ -28,7 +28,6 @@
import android.graphics.drawable.Drawable;
import org.osmdroid.bonuspack.overlays.Polyline;
-import org.osmdroid.bonuspack.routing.OSRMRoadManager;
import org.osmdroid.bonuspack.routing.Road;
import org.osmdroid.bonuspack.routing.RoadManager;
import org.osmdroid.util.GeoPoint;
@@ -38,9 +37,11 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.ExecutionException;
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.R;
+import de.apps4ics.mountainnavigation.handlers.GetRoadFromOsm;
public class MapDialogItemizedIconOverlay extends ItemizedIconOverlay {
private Context context;
@@ -51,7 +52,6 @@
private Drawable negIcon;
private MapView mapView;
- private RoadManager roadManager;
private ArrayList waypoints;
private ArrayList waypointIds;
private Road road;
@@ -83,7 +83,6 @@
waypointIds.add(-1);
}
- roadManager = new OSRMRoadManager(context);
waypoints = new ArrayList<>();
road = new Road();
}
@@ -154,14 +153,17 @@
}
private void checkForSelection(){
- //TODO CORE disable network calls for now
- //mapView.getOverlays().remove(line);
+ mapView.getOverlays().remove(line);
if(selected >= 2){
- //road = roadManager.getRoad(waypoints);
- //line = RoadManager.buildRoadOverlay(road, context);
- //mapView.getOverlays().add(line);
- //mapView.invalidate();
- alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
+ try {
+ road = new GetRoadFromOsm().execute(waypoints.toArray(new GeoPoint[waypoints.size()])).get();
+ line = RoadManager.buildRoadOverlay(road, context);
+ mapView.getOverlays().add(line);
+ mapView.invalidate();
+ alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
+ } catch (InterruptedException e) {
+ } catch (ExecutionException e) {
+ }
} else {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java
index d2edfb8..a7a63aa 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddPathDialog.java
@@ -29,19 +29,20 @@
import android.util.Log;
import org.osmdroid.bonuspack.overlays.Polyline;
-import org.osmdroid.bonuspack.routing.OSRMRoadManager;
import org.osmdroid.bonuspack.routing.Road;
import org.osmdroid.bonuspack.routing.RoadManager;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.overlay.OverlayItem;
import java.util.ArrayList;
+import java.util.concurrent.ExecutionException;
import de.apps4ics.mountainnavigation.adapters.CheckboxImageAdapter;
import de.apps4ics.mountainnavigation.Features;
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.R;
import de.apps4ics.mountainnavigation.handlers.PoiHandler;
+import de.apps4ics.mountainnavigation.handlers.GetRoadFromOsm;
public class AddPathDialog extends DialogFragment {
PoiHandler poiHandler;
@@ -89,7 +90,6 @@
Log.e(MainActivity.TAG, "One of the path markers in addPathDialog is null!");
}
- RoadManager roadManager = new OSRMRoadManager(poiHandler.getContext());
ArrayList waypoints = new ArrayList<>();
DbGeoPoint current = null;
DbGeoPoint last = null;
@@ -100,11 +100,10 @@
long rowId = 0;
String uid = pathMarkers.get(i).getUid();
if(uid != null && !uid.equals("")){
- String[] uids = pathMarkers.get(i).getUid().split("_"); //format is 123456789_4
- String timeStr = uids[0];
- String idStr = uids[1];
+ String timeStr = pathMarkers.get(i).getUid();
+ String idStr = pathMarkers.get(i).getTitle();
if(timeStr != null && !timeStr.equals("")) time = Long.parseLong(timeStr) / 1000;
- if(idStr != null && !idStr.equals("")) rowId = Long.parseLong(uids[1]);
+ if(idStr != null && !idStr.equals("")) rowId = Long.parseLong(idStr);
}
current = new DbGeoPoint(gp.getLatitude(), gp.getLongitude(), gp.getAltitude(), time);
@@ -118,11 +117,16 @@
}
last = current;
}
- //TODO CORE disabled network calls for now
- /*Road road = roadManager.getRoad(waypoints);
- Polyline line = RoadManager.buildRoadOverlay(road, poiHandler.getContext());
- MainActivity.getMapView().getOverlays().add(line);
- MainActivity.getMapView().invalidate();*/
+ try {
+ Road road = new GetRoadFromOsm().execute(waypoints.toArray(new GeoPoint[waypoints.size()])).get();
+ Polyline line = RoadManager.buildRoadOverlay(road, poiHandler.getContext());
+ MainActivity.getMapView().getOverlays().add(line);
+ MainActivity.getMapView().invalidate();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
MainActivity.setPathMarkers(new ArrayList());
}
})