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()); } })