diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/HikePoint.java b/app/src/main/java/de/apps4ics/mountainnavigation/HikePoint.java index 6cadbd1..43fb86b 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/HikePoint.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/HikePoint.java @@ -39,7 +39,7 @@ } public HikePoint(GeoPoint geoPoint) { - this(geoPoint, System.currentTimeMillis()); + this(geoPoint, System.currentTimeMillis()/1000); } public HikePoint(Location location) { diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 76ed02d..7d510ad 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -29,6 +29,7 @@ import android.content.res.Resources; import android.graphics.Paint; import android.graphics.PorterDuff; +import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.location.Criteria; import android.location.Location; @@ -67,6 +68,7 @@ import android.widget.TextView; import android.widget.Toast; +import com.db.chart.listener.OnEntryClickListener; import com.db.chart.model.LineSet; import com.db.chart.view.AxisController; import com.db.chart.view.ChartView; @@ -305,13 +307,9 @@ }); int lengthRest = hikeHandler.getTime(); - int hours = lengthRest / 3600; - lengthRest %= 3600; - int minutes = lengthRest / 60; - int seconds = lengthRest % 60; lengthView.setText(String.format(Locale.getDefault(), "Length so far: %.02fm", hikeHandler.getLength())); - timeView.setText(String.format(Locale.getDefault(), "Time so far: %02d:%02d:%02d", hours, minutes, seconds)); + timeView.setText("Time so far: " + formatTimeIntervalToHms(lengthRest)); heightUpView.setText(String.format(Locale.getDefault(), "Up: %.02fm", hikeHandler.getUp())); heightDownView.setText(String.format(Locale.getDefault(), "Down: %.02fm", hikeHandler.getDown())); @@ -330,7 +328,7 @@ long hikeId = poiHandler.addPoi(new Hike(0, hikeHandler.getLength(), hikeHandler.getTime(), (int) (time % 3), name, "You", time, hikeHandler.getUp(), hikeHandler.getDown(), floor)); for(HikePoint hp : hikePoints) { - poiHandler.addGp(new DbGeoPoint(hp.getLocation(), System.currentTimeMillis(), hikeId, Types.HIKE)); + poiHandler.addGp(new DbGeoPoint(hp.getLocation(), hp.getTimestamp(), hikeId, Types.HIKE)); } } } @@ -411,16 +409,20 @@ List pathPoints = new ArrayList<>(); float[] elevationDataPoints = new float[dbPoints.size()]; String[] elevationDataPointsNames = new String[dbPoints.size()]; + final String[] elevationDataPointsTimes = new String[dbPoints.size()]; double min = Double.MAX_VALUE; double max = Double.MIN_VALUE; + long startTime = dbPoints.get(0).getTime(); for(int i=0; i< dbPoints.size(); i++) { DbGeoPoint dbGeoPoint = dbPoints.get(i); + elevationDataPointsTimes[i] = formatTimeIntervalToHms((int) (dbGeoPoint.getTime()-startTime)); + Log.d(TAG, "formatted: " + elevationDataPointsTimes[i]); double alt = dbGeoPoint.getAlt(); pathPoints.add(new GeoPoint(dbGeoPoint.getLat(), dbGeoPoint.getLon(), alt)); //TODO REMOVE alt = (int) (Math.random() * 100) + 40; elevationDataPoints[i] = (int) alt; - elevationDataPointsNames[i] = i+""; + elevationDataPointsNames[i] = (dbGeoPoint.getTime()-startTime)+"s"; if(alt < min) min = alt; if(alt > max) max = alt; } @@ -455,7 +457,7 @@ difficultyView.setCompoundDrawablesWithIntrinsicBounds(difficultyDrawable, null, null, null); upView.setText(String.format(Locale.getDefault(), "Up: %.02fm", hike.getHeightUp())); downView.setText(String.format(Locale.getDefault(), "Down: %.02fm", hike.getHeightDown())); - LineSet lineSet = new LineSet(elevationDataPointsNames, elevationDataPoints); + final LineSet lineSet = new LineSet(elevationDataPointsNames, elevationDataPoints); lineSet.setDotsColor(res.getColor(R.color.white)); lineSet.setDotsStrokeColor(res.getColor(R.color.elevation_line)); lineSet.setColor(res.getColor(R.color.elevation_line)); @@ -477,6 +479,14 @@ elevationProfileNew.setYAxis(false); elevationProfileNew.setGrid(ChartView.GridType.HORIZONTAL, new Paint()); elevationProfileNew.addData(lineSet); + + elevationProfileNew.setOnEntryClickListener(new OnEntryClickListener() { + @Override + public void onClick(int setIndex, int entryIndex, Rect rect) { + Toaster(lineSet.getEntry(entryIndex).getValue() + "m @ " + elevationDataPointsTimes[entryIndex], true); + } + }); + elevationProfileNew.show(new Animation(1000)); hikeMap.setTileSource(TileSourceFactory.MAPNIK); hikeMap.setBuiltInZoomControls(true); @@ -892,6 +902,17 @@ return activeNetwork != null && activeNetwork.isConnected(); } + public static String formatTimeIntervalToHms(int seconds) { + Log.d(TAG, "seconds: " + seconds); + int hours = seconds / 3600; + seconds %= 3600; + int minutes = seconds / 60; + seconds %= 60; + String s = String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds); + Log.d(TAG, "preformatted: " + s); + return s; + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/HikeHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/HikeHandler.java index 964d91d..5886959 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/HikeHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/HikeHandler.java @@ -90,7 +90,7 @@ if(!needsUpdate) return; needsUpdate = false; if(timestamps.size() < 2) return; - time = (int) (timestamps.get(timestamps.size()-1) - timestamps.get(0)) / 1000; + time = (int) (timestamps.get(timestamps.size()-1) - timestamps.get(0)); GeoPoint first; GeoPoint second = null; float[] results = new float[3]; @@ -108,7 +108,7 @@ if(!isRecording) return; needsUpdate = true; geopoints.add(new GeoPoint(location.getLatitude(), location.getLongitude(), location.getAltitude())); - timestamps.add(System.currentTimeMillis()); + timestamps.add(System.currentTimeMillis()/1000); float currentAltitude = (float) location.getAltitude(); if(lastAltitude != Integer.MIN_VALUE && Math.abs(lastAltitude - currentAltitude) > MIN_ALTITUDE_DIFFERENCE){ if(lastAltitude < currentAltitude) up += currentAltitude - lastAltitude; 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 059930e..ad8d4f4 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java @@ -669,6 +669,7 @@ public long addPoi(Poi poi){ long rowId = dbHandler.addPoi(poi); if(rowId >= 0) MainActivity.Toaster(context.getString(R.string.add_poi_success), true, context); + if(poi.getType() == Types.GP || poi.getType() == Types.HIKE) return rowId; Location mLocation = MainActivity.getLocation(); double _lat = mLocation.getLatitude(); double _lon = mLocation.getLongitude(); diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java index c3c56cf..6330b2c 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java @@ -44,7 +44,7 @@ } public DbGeoPoint(double aLatitude, double aLongitude, double aAltitude) { - this(aLatitude, aLongitude, aAltitude, System.currentTimeMillis(), 0, 0); + this(aLatitude, aLongitude, aAltitude, System.currentTimeMillis()/1000, 0, 0); } public DbGeoPoint(double aLatitude, double aLongitude, double aAltitude, long _time, long _poiId, int _poiType) {