forked from upstream-mirrors/OpenTracks
@@ -278,7 +278,7 @@ public class SearchEngineTest {
|
|||||||
|
|
||||||
private void assertTrackResult(Track.Id trackId, ScoredResult result) {
|
private void assertTrackResult(Track.Id trackId, ScoredResult result) {
|
||||||
assertNotNull("Not a track", result.track);
|
assertNotNull("Not a track", result.track);
|
||||||
assertNull("Ambiguous result", result.waypoint);
|
assertNull("Ambiguous result", result.marker);
|
||||||
assertEquals(trackId, result.track.getId());
|
assertEquals(trackId, result.track.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,15 +293,15 @@ public class SearchEngineTest {
|
|||||||
for (int i = 0; i < results.size(); i++) {
|
for (int i = 0; i < results.size(); i++) {
|
||||||
ScoredResult result = results.get(i);
|
ScoredResult result = results.get(i);
|
||||||
assertNotNull(errMsg, result.track);
|
assertNotNull(errMsg, result.track);
|
||||||
assertNull(errMsg, result.waypoint);
|
assertNull(errMsg, result.marker);
|
||||||
assertEquals(errMsg, trackIds[i], result.track.getId());
|
assertEquals(errMsg, trackIds[i], result.track.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertWaypointResult(Marker.Id waypointId, ScoredResult result) {
|
private void assertWaypointResult(Marker.Id waypointId, ScoredResult result) {
|
||||||
assertNotNull("Not a waypoint", result.waypoint);
|
assertNotNull("Not a waypoint", result.marker);
|
||||||
assertNull("Ambiguous result", result.track);
|
assertNull("Ambiguous result", result.track);
|
||||||
assertEquals(waypointId, result.waypoint.getId());
|
assertEquals(waypointId, result.marker.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertWaypointResults(List<ScoredResult> results, Marker.Id... waypointIds) {
|
private void assertWaypointResults(List<ScoredResult> results, Marker.Id... waypointIds) {
|
||||||
@@ -314,9 +314,9 @@ public class SearchEngineTest {
|
|||||||
assertEquals(results.size(), waypointIds.length);
|
assertEquals(results.size(), waypointIds.length);
|
||||||
for (int i = 0; i < results.size(); i++) {
|
for (int i = 0; i < results.size(); i++) {
|
||||||
ScoredResult result = results.get(i);
|
ScoredResult result = results.get(i);
|
||||||
assertNotNull(errMsg, result.waypoint);
|
assertNotNull(errMsg, result.marker);
|
||||||
assertNull(errMsg, result.track);
|
assertNull(errMsg, result.track);
|
||||||
assertEquals(errMsg, waypointIds[i], result.waypoint.getId());
|
assertEquals(errMsg, waypointIds[i], result.marker.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-31
@@ -53,7 +53,7 @@ public class ExportImportTest {
|
|||||||
private static final String TRACK_CATEGORY = "the category";
|
private static final String TRACK_CATEGORY = "the category";
|
||||||
private static final String TRACK_DESCRIPTION = "the description";
|
private static final String TRACK_DESCRIPTION = "the description";
|
||||||
|
|
||||||
private final List<Marker> waypoints = new ArrayList<>();
|
private final List<Marker> markers = new ArrayList<>();
|
||||||
private final List<TrackPoint> trackPoints = new ArrayList<>();
|
private final List<TrackPoint> trackPoints = new ArrayList<>();
|
||||||
|
|
||||||
private Track.Id importTrackId;
|
private Track.Id importTrackId;
|
||||||
@@ -72,19 +72,19 @@ public class ExportImportTest {
|
|||||||
trackPoints.addAll(Arrays.asList(track.second));
|
trackPoints.addAll(Arrays.asList(track.second));
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
Marker waypoint = new Marker(track.second[i].getLocation());
|
Marker marker = new Marker(track.second[i].getLocation());
|
||||||
waypoint.setName("the waypoint " + i);
|
marker.setName("the marker " + i);
|
||||||
waypoint.setDescription("the waypoint description " + i);
|
marker.setDescription("the marker description " + i);
|
||||||
waypoint.setCategory("the waypoint category" + i);
|
marker.setCategory("the marker category" + i);
|
||||||
waypoint.setIcon("the waypoing icon" + i);
|
marker.setIcon("the waypoing icon" + i);
|
||||||
waypoint.setPhotoUrl("the photo url" + i);
|
marker.setPhotoUrl("the photo url" + i);
|
||||||
waypoint.setTrackId(trackId);
|
marker.setTrackId(trackId);
|
||||||
contentProviderUtils.insertMarker(waypoint);
|
contentProviderUtils.insertMarker(marker);
|
||||||
|
|
||||||
waypoints.add(waypoint);
|
markers.add(marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals(waypoints.size(), contentProviderUtils.getMarkerCount(trackId));
|
assertEquals(markers.size(), contentProviderUtils.getMarkerCount(trackId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -129,8 +129,8 @@ public class ExportImportTest {
|
|||||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||||
assertEquals(track.getUuid(), importedTrack.getUuid());
|
assertEquals(track.getUuid(), importedTrack.getUuid());
|
||||||
|
|
||||||
// 2. waypoints
|
// 2. markers
|
||||||
assertWaypoints();
|
assertMarkers();
|
||||||
|
|
||||||
// 3. trackpoints
|
// 3. trackpoints
|
||||||
assertTrackpoints(false, false, false);
|
assertTrackpoints(false, false, false);
|
||||||
@@ -164,8 +164,8 @@ public class ExportImportTest {
|
|||||||
assertEquals(track.getName(), importedTrack.getName());
|
assertEquals(track.getName(), importedTrack.getName());
|
||||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||||
|
|
||||||
// 2. waypoints
|
// 2. markers
|
||||||
assertWaypoints();
|
assertMarkers();
|
||||||
|
|
||||||
// 3. trackpoints
|
// 3. trackpoints
|
||||||
assertTrackpoints(true, true, true);
|
assertTrackpoints(true, true, true);
|
||||||
@@ -253,8 +253,8 @@ public class ExportImportTest {
|
|||||||
//TODO exporting and importing a track icon is not yet supported by GpxTrackWriter.
|
//TODO exporting and importing a track icon is not yet supported by GpxTrackWriter.
|
||||||
//assertEquals(track.getIcon(), trackImported.getIcon());
|
//assertEquals(track.getIcon(), trackImported.getIcon());
|
||||||
|
|
||||||
// 2. waypoints
|
// 2. markers
|
||||||
assertWaypoints();
|
assertMarkers();
|
||||||
|
|
||||||
// 3. trackpoints
|
// 3. trackpoints
|
||||||
assertTrackpoints(false, true, true);
|
assertTrackpoints(false, true, true);
|
||||||
@@ -285,22 +285,22 @@ public class ExportImportTest {
|
|||||||
assertNull(trackImported);
|
assertNull(trackImported);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertWaypoints() {
|
private void assertMarkers() {
|
||||||
assertEquals(waypoints.size(), contentProviderUtils.getMarkerCount(importTrackId));
|
assertEquals(markers.size(), contentProviderUtils.getMarkerCount(importTrackId));
|
||||||
|
|
||||||
List<Marker> importedWaypoints = contentProviderUtils.getMarkers(importTrackId);
|
List<Marker> importedMarkers = contentProviderUtils.getMarkers(importTrackId);
|
||||||
for (int i = 0; i < waypoints.size(); i++) {
|
for (int i = 0; i < markers.size(); i++) {
|
||||||
Marker waypoint = waypoints.get(i);
|
Marker marker = markers.get(i);
|
||||||
Marker importedWaypoint = importedWaypoints.get(i);
|
Marker importMarker = importedMarkers.get(i);
|
||||||
assertEquals(waypoint.getCategory(), importedWaypoint.getCategory());
|
assertEquals(marker.getCategory(), importMarker.getCategory());
|
||||||
assertEquals(waypoint.getDescription(), importedWaypoint.getDescription());
|
assertEquals(marker.getDescription(), importMarker.getDescription());
|
||||||
// assertEquals(waypoint.getIcon(), importedWaypoint.getIcon()); // TODO for KML
|
// assertEquals(marker.getIcon(), importMarker.getIcon()); // TODO for KML
|
||||||
assertEquals(waypoint.getName(), importedWaypoint.getName());
|
assertEquals(marker.getName(), importMarker.getName());
|
||||||
assertEquals("", importedWaypoint.getPhotoUrl());
|
assertEquals("", importMarker.getPhotoUrl());
|
||||||
|
|
||||||
assertEquals(waypoint.getLocation().getLatitude(), importedWaypoint.getLocation().getLatitude(), 0.001);
|
assertEquals(marker.getLocation().getLatitude(), importMarker.getLocation().getLatitude(), 0.001);
|
||||||
assertEquals(waypoint.getLocation().getLongitude(), importedWaypoint.getLocation().getLongitude(), 0.001);
|
assertEquals(marker.getLocation().getLongitude(), importMarker.getLocation().getLongitude(), 0.001);
|
||||||
assertEquals(waypoint.getLocation().getAltitude(), importedWaypoint.getLocation().getAltitude(), 0.001);
|
assertEquals(marker.getLocation().getAltitude(), importMarker.getLocation().getAltitude(), 0.001);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
|||||||
if (result.track != null) {
|
if (result.track != null) {
|
||||||
output.add(prepareTrackForDisplay(result.track));
|
output.add(prepareTrackForDisplay(result.track));
|
||||||
} else {
|
} else {
|
||||||
output.add(prepareMarkerForDisplay(result.waypoint));
|
output.add(prepareMarkerForDisplay(result.marker));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import de.dennisguse.opentracks.util.StringUtils;
|
|||||||
import de.dennisguse.opentracks.util.UnitConversions;
|
import de.dennisguse.opentracks.util.UnitConversions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates descriptions for tracks and waypoints.
|
* Generates descriptions for tracks and markers.
|
||||||
*
|
*
|
||||||
* @author Jimmy Shih
|
* @author Jimmy Shih
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import de.dennisguse.opentracks.util.LocationUtils;
|
|||||||
import de.dennisguse.opentracks.util.UnitConversions;
|
import de.dennisguse.opentracks.util.UnitConversions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Engine for searching for tracks and waypoints by text.
|
* Engine for searching for tracks and markers by text.
|
||||||
*
|
*
|
||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
@@ -53,9 +53,9 @@ public class SearchEngine {
|
|||||||
TracksColumns.CATEGORY + " LIKE ?";
|
TracksColumns.CATEGORY + " LIKE ?";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WHERE query to get waypoints by name.
|
* WHERE query to get markers by name.
|
||||||
*/
|
*/
|
||||||
private static final String WAYPOINT_SELECTION_QUERY =
|
private static final String MARKER_SELECTION_QUERY =
|
||||||
MarkerColumns.NAME + " LIKE ? OR " +
|
MarkerColumns.NAME + " LIKE ? OR " +
|
||||||
MarkerColumns.DESCRIPTION + " LIKE ? OR " +
|
MarkerColumns.DESCRIPTION + " LIKE ? OR " +
|
||||||
MarkerColumns.CATEGORY + " LIKE ?";
|
MarkerColumns.CATEGORY + " LIKE ?";
|
||||||
@@ -66,9 +66,9 @@ public class SearchEngine {
|
|||||||
private static final String TRACK_SELECTION_ORDER = TracksColumns._ID + " DESC LIMIT 1000";
|
private static final String TRACK_SELECTION_ORDER = TracksColumns._ID + " DESC LIMIT 1000";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Order of waypoint results.
|
* Order of marker results.
|
||||||
*/
|
*/
|
||||||
private static final String WAYPOINT_SELECTION_ORDER = MarkerColumns._ID + " DESC";
|
private static final String MARKER_SELECTION_ORDER = MarkerColumns._ID + " DESC";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How much we promote a match in the track category.
|
* How much we promote a match in the track category.
|
||||||
@@ -86,9 +86,9 @@ public class SearchEngine {
|
|||||||
private static final double TRACK_NAME_PROMOTION = 16.0;
|
private static final double TRACK_NAME_PROMOTION = 16.0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How much we promote a waypoint result if it's in the currently-selected track.
|
* How much we promote a marker result if it's in the currently-selected track.
|
||||||
*/
|
*/
|
||||||
private static final double CURRENT_TRACK_WAYPOINT_PROMOTION = 2.0;
|
private static final double CURRENT_TRACK_MARKER_PROMOTION = 2.0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How much we promote a track result if it's the currently-selected track.
|
* How much we promote a track result if it's the currently-selected track.
|
||||||
@@ -96,9 +96,9 @@ public class SearchEngine {
|
|||||||
private static final double CURRENT_TRACK_DEMOTION = 0.5;
|
private static final double CURRENT_TRACK_DEMOTION = 0.5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maximum number of waypoints which will be retrieved and scored.
|
* Maximum number of markers which will be retrieved and scored.
|
||||||
*/
|
*/
|
||||||
private static final int MAX_SCORED_WAYPOINTS = 100;
|
private static final int MAX_SCORED_MARKERS = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Oldest timestamp for which we rank based on time (2000-01-01 00:00:00.000)
|
* Oldest timestamp for which we rank based on time (2000-01-01 00:00:00.000)
|
||||||
@@ -115,16 +115,16 @@ public class SearchEngine {
|
|||||||
return scoreDiff;
|
return scoreDiff;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make tracks come before waypoints.
|
// Make tracks come before markers.
|
||||||
if (r1.waypoint != null && r2.track != null) {
|
if (r1.marker != null && r2.track != null) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (r1.track != null && r2.waypoint != null) {
|
} else if (r1.track != null && r2.marker != null) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finally, use arbitrary ordering, by ID.
|
// Finally, use arbitrary ordering, by ID.
|
||||||
long id1 = r1.track != null ? r1.track.getId().getId() : r1.waypoint.getId().getId();
|
long id1 = r1.track != null ? r1.track.getId().getId() : r1.marker.getId().getId();
|
||||||
long id2 = r2.track != null ? r2.track.getId().getId() : r2.waypoint.getId().getId();
|
long id2 = r2.track != null ? r2.track.getId().getId() : r2.marker.getId().getId();
|
||||||
long idDiff = id2 - id1;
|
long idDiff = id2 - id1;
|
||||||
return Long.signum(idDiff);
|
return Long.signum(idDiff);
|
||||||
};
|
};
|
||||||
@@ -153,7 +153,7 @@ public class SearchEngine {
|
|||||||
TreeSet<ScoredResult> scoredResults = new TreeSet<>(SCORED_RESULT_COMPARATOR);
|
TreeSet<ScoredResult> scoredResults = new TreeSet<>(SCORED_RESULT_COMPARATOR);
|
||||||
|
|
||||||
scoreTrackResults(retrieveTracks(query), query, scoredResults);
|
scoreTrackResults(retrieveTracks(query), query, scoredResults);
|
||||||
scoreWaypointResults(retrieveWaypoints(query), query, scoredResults);
|
scoreMarkersResults(retrieveMarkers(query), query, scoredResults);
|
||||||
|
|
||||||
return scoredResults;
|
return scoredResults;
|
||||||
}
|
}
|
||||||
@@ -186,33 +186,33 @@ public class SearchEngine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves waypoints matching the given query from the database.
|
* Retrieves markers matching the given query from the database.
|
||||||
*
|
*
|
||||||
* @param query the query to retrieve for
|
* @param query the query to retrieve for
|
||||||
*/
|
*/
|
||||||
private List<Marker> retrieveWaypoints(SearchQuery query) {
|
private List<Marker> retrieveMarkers(SearchQuery query) {
|
||||||
ArrayList<Marker> waypoints = new ArrayList<>();
|
ArrayList<Marker> markers = new ArrayList<>();
|
||||||
|
|
||||||
String queryLikeSelection2 = "%" + query.textQuery + "%";
|
String queryLikeSelection2 = "%" + query.textQuery + "%";
|
||||||
String[] waypointSelectionArgs = new String[]{
|
String[] markersSelectionArgs = new String[]{
|
||||||
queryLikeSelection2,
|
queryLikeSelection2,
|
||||||
queryLikeSelection2,
|
queryLikeSelection2,
|
||||||
queryLikeSelection2
|
queryLikeSelection2
|
||||||
};
|
};
|
||||||
|
|
||||||
try (Cursor cursor = providerUtils.getMarkerCursor(WAYPOINT_SELECTION_QUERY, waypointSelectionArgs, WAYPOINT_SELECTION_ORDER, MAX_SCORED_WAYPOINTS)) {
|
try (Cursor cursor = providerUtils.getMarkerCursor(MARKER_SELECTION_QUERY, markersSelectionArgs, MARKER_SELECTION_ORDER, MAX_SCORED_MARKERS)) {
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
waypoints.ensureCapacity(cursor.getCount());
|
markers.ensureCapacity(cursor.getCount());
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
Marker waypoint = providerUtils.createMarker(cursor);
|
Marker marker = providerUtils.createMarker(cursor);
|
||||||
if (LocationUtils.isValidLocation(waypoint.getLocation())) {
|
if (LocationUtils.isValidLocation(marker.getLocation())) {
|
||||||
waypoints.add(waypoint);
|
markers.add(marker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return waypoints;
|
return markers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -258,40 +258,40 @@ public class SearchEngine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scores a collection of waypoint results.
|
* Scores a collection of marker results.
|
||||||
*
|
*
|
||||||
* @param waypoints the results to score
|
* @param markers the results to score
|
||||||
* @param query the query to score for
|
* @param query the query to score for
|
||||||
* @param output the collection to fill with scored results
|
* @param output the collection to fill with scored results
|
||||||
*/
|
*/
|
||||||
private void scoreWaypointResults(Collection<Marker> waypoints, SearchQuery query, Collection<ScoredResult> output) {
|
private void scoreMarkersResults(Collection<Marker> markers, SearchQuery query, Collection<ScoredResult> output) {
|
||||||
for (Marker waypoint : waypoints) {
|
for (Marker marker : markers) {
|
||||||
// Calculate the score.
|
// Calculate the score.
|
||||||
double score = scoreWaypointResult(query, waypoint);
|
double score = scoreMarkerResult(query, marker);
|
||||||
|
|
||||||
// Add to the output.
|
// Add to the output.
|
||||||
output.add(new ScoredResult(waypoint, score));
|
output.add(new ScoredResult(marker, score));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scores a single waypoint result.
|
* Scores a single marker result.
|
||||||
*
|
*
|
||||||
* @param query the query to score for
|
* @param query the query to score for
|
||||||
* @param waypoint the results to score
|
* @param marker the results to score
|
||||||
* @return the score for the waypoint
|
* @return the score for the marker
|
||||||
*/
|
*/
|
||||||
private double scoreWaypointResult(SearchQuery query, Marker waypoint) {
|
private double scoreMarkerResult(SearchQuery query, Marker marker) {
|
||||||
double score = 1.0;
|
double score = 1.0;
|
||||||
|
|
||||||
Location location = waypoint.getLocation();
|
Location location = marker.getLocation();
|
||||||
score *= getTitleBoost(query, waypoint.getName(), waypoint.getDescription(), waypoint.getCategory());
|
score *= getTitleBoost(query, marker.getName(), marker.getDescription(), marker.getCategory());
|
||||||
score *= getDistanceBoost(query, location.getLatitude(), location.getLongitude());
|
score *= getDistanceBoost(query, location.getLatitude(), location.getLongitude());
|
||||||
score *= getTimeBoost(query, location.getTime());
|
score *= getTimeBoost(query, location.getTime());
|
||||||
|
|
||||||
// Score waypoints in the currently-selected track higher (searching inside the current track).
|
// Score markers in the currently-selected track higher (searching inside the current track).
|
||||||
if (waypoint.getTrackId() != null && waypoint.getTrackId().equals(query.currentTrackId)) {
|
if (marker.getTrackId() != null && marker.getTrackId().equals(query.currentTrackId)) {
|
||||||
score *= CURRENT_TRACK_WAYPOINT_PROMOTION;
|
score *= CURRENT_TRACK_MARKER_PROMOTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
return score;
|
return score;
|
||||||
@@ -301,9 +301,9 @@ public class SearchEngine {
|
|||||||
* Calculates the boosting of the score due to the field(s) in which the match occured.
|
* Calculates the boosting of the score due to the field(s) in which the match occured.
|
||||||
*
|
*
|
||||||
* @param query the query to boost for
|
* @param query the query to boost for
|
||||||
* @param name the name of the track or waypoint
|
* @param name the name of the track or marker
|
||||||
* @param description the description of the track or waypoint
|
* @param description the description of the track or marker
|
||||||
* @param category the category of the track or waypoint
|
* @param category the category of the track or marker
|
||||||
* @return the total boost to be applied to the result
|
* @return the total boost to be applied to the result
|
||||||
*/
|
*/
|
||||||
private double getTitleBoost(SearchQuery query, String name, String description, String category) {
|
private double getTitleBoost(SearchQuery query, String name, String description, String category) {
|
||||||
@@ -398,18 +398,18 @@ public class SearchEngine {
|
|||||||
*/
|
*/
|
||||||
public static class ScoredResult {
|
public static class ScoredResult {
|
||||||
public final Track track;
|
public final Track track;
|
||||||
public final Marker waypoint;
|
public final Marker marker;
|
||||||
final double score;
|
final double score;
|
||||||
|
|
||||||
ScoredResult(Track track, double score) {
|
ScoredResult(Track track, double score) {
|
||||||
this.track = track;
|
this.track = track;
|
||||||
this.waypoint = null;
|
this.marker = null;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScoredResult(Marker waypoint, double score) {
|
ScoredResult(Marker marker, double score) {
|
||||||
this.track = null;
|
this.track = null;
|
||||||
this.waypoint = waypoint;
|
this.marker = marker;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,7 +418,7 @@ public class SearchEngine {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "ScoredResult ["
|
return "ScoredResult ["
|
||||||
+ (track != null ? ("trackId=" + track.getId().getId() + ", ") : "")
|
+ (track != null ? ("trackId=" + track.getId().getId() + ", ") : "")
|
||||||
+ (waypoint != null ? ("wptId=" + waypoint.getId().getId() + ", ") : "")
|
+ (marker != null ? ("wptId=" + marker.getId().getId() + ", ") : "")
|
||||||
+ "score=" + score + "]";
|
+ "score=" + score + "]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,14 +58,14 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
* We may display more than this number of points.
|
* We may display more than this number of points.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private static final int TARGET_DISPLAYED_TRACK_POINTS = 5000;
|
private static final int TARGET_DISPLAYED_TRACKPOINTS = 5000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maximum number of waypoints to displayed.
|
* Maximum number of markers to displayed.
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private static final int MAX_DISPLAYED_WAYPOINTS = 128;
|
private static final int MAX_DISPLAYED_MARKERS = 128;
|
||||||
|
|
||||||
private static final String TAG = TrackDataHub.class.getSimpleName();
|
private static final String TAG = TrackDataHub.class.getSimpleName();
|
||||||
|
|
||||||
@@ -90,11 +90,11 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
|
|
||||||
// Registered listeners
|
// Registered listeners
|
||||||
private ContentObserver tracksTableObserver;
|
private ContentObserver tracksTableObserver;
|
||||||
private ContentObserver waypointsTableObserver;
|
private ContentObserver markersTableObserver;
|
||||||
private ContentObserver trackPointsTableObserver;
|
private ContentObserver trackPointsTableObserver;
|
||||||
|
|
||||||
public TrackDataHub(Context context) {
|
public TrackDataHub(Context context) {
|
||||||
this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACK_POINTS);
|
this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACKPOINTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -126,13 +126,13 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
};
|
};
|
||||||
contentResolver.registerContentObserver(TracksColumns.CONTENT_URI, false, tracksTableObserver);
|
contentResolver.registerContentObserver(TracksColumns.CONTENT_URI, false, tracksTableObserver);
|
||||||
|
|
||||||
waypointsTableObserver = new ContentObserver(handler) {
|
markersTableObserver = new ContentObserver(handler) {
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange) {
|
||||||
notifyWaypointsTableUpdate(trackDataManager.getListenerWaypoints());
|
notifyMarkersTableUpdate(trackDataManager.getListenerMarkers());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
contentResolver.registerContentObserver(MarkerColumns.CONTENT_URI, false, waypointsTableObserver);
|
contentResolver.registerContentObserver(MarkerColumns.CONTENT_URI, false, markersTableObserver);
|
||||||
|
|
||||||
trackPointsTableObserver = new ContentObserver(handler) {
|
trackPointsTableObserver = new ContentObserver(handler) {
|
||||||
@Override
|
@Override
|
||||||
@@ -165,7 +165,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
//Unregister listeners
|
//Unregister listeners
|
||||||
ContentResolver contentResolver = context.getContentResolver();
|
ContentResolver contentResolver = context.getContentResolver();
|
||||||
contentResolver.unregisterContentObserver(tracksTableObserver);
|
contentResolver.unregisterContentObserver(tracksTableObserver);
|
||||||
contentResolver.unregisterContentObserver(waypointsTableObserver);
|
contentResolver.unregisterContentObserver(markersTableObserver);
|
||||||
contentResolver.unregisterContentObserver(trackPointsTableObserver);
|
contentResolver.unregisterContentObserver(trackPointsTableObserver);
|
||||||
|
|
||||||
if (handlerThread != null) {
|
if (handlerThread != null) {
|
||||||
@@ -191,9 +191,9 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
*
|
*
|
||||||
* @param trackDataListener the track data listener
|
* @param trackDataListener the track data listener
|
||||||
*/
|
*/
|
||||||
public void registerTrackDataListener(final TrackDataListener trackDataListener, final boolean tracksTable, final boolean waypointsTable, final boolean trackPointsTable_SampleIn, final boolean trackPointsTable_SampleOut) {
|
public void registerTrackDataListener(final TrackDataListener trackDataListener, final boolean tracksTable, final boolean markersTable, final boolean trackPointsTable_SampleIn, final boolean trackPointsTable_SampleOut) {
|
||||||
runInHandlerThread(() -> {
|
runInHandlerThread(() -> {
|
||||||
trackDataManager.registerTrackDataListener(trackDataListener, tracksTable, waypointsTable, trackPointsTable_SampleIn, trackPointsTable_SampleOut);
|
trackDataManager.registerTrackDataListener(trackDataListener, tracksTable, markersTable, trackPointsTable_SampleIn, trackPointsTable_SampleOut);
|
||||||
if (started) {
|
if (started) {
|
||||||
loadDataForListener(trackDataListener);
|
loadDataForListener(trackDataListener);
|
||||||
}
|
}
|
||||||
@@ -250,7 +250,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
listener.clearTrackPoints();
|
listener.clearTrackPoints();
|
||||||
}
|
}
|
||||||
notifyTrackPointsTableUpdate(true, trackDataManager.getListenerTrackPoints_SampledIn(), trackDataManager.getListenerTrackPoints_SampledOut());
|
notifyTrackPointsTableUpdate(true, trackDataManager.getListenerTrackPoints_SampledIn(), trackDataManager.getListenerTrackPoints_SampledOut());
|
||||||
notifyWaypointsTableUpdate(trackDataManager.getListenerWaypoints());
|
notifyMarkersTableUpdate(trackDataManager.getListenerMarkers());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -277,8 +277,8 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
notifyTrackPointsTableUpdate(isOnlyListener, trackDataListeners, sampledOutListeners);
|
notifyTrackPointsTableUpdate(isOnlyListener, trackDataListeners, sampledOutListeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trackDataManager.listensForWaypoints(trackDataListener)) {
|
if (trackDataManager.listensForMarkers(trackDataListener)) {
|
||||||
notifyWaypointsTableUpdate(trackDataListeners);
|
notifyMarkersTableUpdate(trackDataListeners);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,36 +298,36 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies waypoint table update.
|
* Notifies marker table update.
|
||||||
* Currently, reloads all the waypoints up to {@link #MAX_DISPLAYED_WAYPOINTS}. To be run in the {@link #handler} thread.
|
* Currently, reloads all the markers up to {@link #MAX_DISPLAYED_MARKERS}. To be run in the {@link #handler} thread.
|
||||||
*
|
*
|
||||||
* @param trackDataListeners the track data listeners to notify
|
* @param trackDataListeners the track data listeners to notify
|
||||||
*/
|
*/
|
||||||
private void notifyWaypointsTableUpdate(Set<TrackDataListener> trackDataListeners) {
|
private void notifyMarkersTableUpdate(Set<TrackDataListener> trackDataListeners) {
|
||||||
if (trackDataListeners.isEmpty()) {
|
if (trackDataListeners.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TrackDataListener trackDataListener : trackDataListeners) {
|
for (TrackDataListener trackDataListener : trackDataListeners) {
|
||||||
trackDataListener.clearWaypoints();
|
trackDataListener.clearMarkers();
|
||||||
}
|
}
|
||||||
|
|
||||||
try (Cursor cursor = contentProviderUtils.getMarkerCursor(selectedTrackId, null, MAX_DISPLAYED_WAYPOINTS)) {
|
try (Cursor cursor = contentProviderUtils.getMarkerCursor(selectedTrackId, null, MAX_DISPLAYED_MARKERS)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
Marker waypoint = contentProviderUtils.createMarker(cursor);
|
Marker marker = contentProviderUtils.createMarker(cursor);
|
||||||
if (!LocationUtils.isValidLocation(waypoint.getLocation())) {
|
if (!LocationUtils.isValidLocation(marker.getLocation())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (TrackDataListener trackDataListener : trackDataListeners) {
|
for (TrackDataListener trackDataListener : trackDataListeners) {
|
||||||
trackDataListener.onNewWaypoint(waypoint);
|
trackDataListener.onNewMarker(marker);
|
||||||
}
|
}
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TrackDataListener trackDataListener : trackDataListeners) {
|
for (TrackDataListener trackDataListener : trackDataListeners) {
|
||||||
trackDataListener.onNewWaypointsDone();
|
trackDataListener.onNewMarkersDone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,20 +60,20 @@ public interface TrackDataListener {
|
|||||||
void onNewTrackPointsDone();
|
void onNewTrackPointsDone();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called to clear previously sent waypoints.
|
* Called to clear previously sent markers.
|
||||||
*/
|
*/
|
||||||
void clearWaypoints();
|
void clearMarkers();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a new waypoint is read.
|
* Called when a new marker is read.
|
||||||
*
|
*
|
||||||
* @param waypoint the waypoint
|
* @param marker the marker
|
||||||
*/
|
*/
|
||||||
void onNewWaypoint(Marker waypoint);
|
void onNewMarker(Marker marker);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when finish sending new waypoints.
|
* Called when finish sending new markers.
|
||||||
* This gets called after every batch of calls to {@link #clearWaypoints()} and {@link #onNewWaypoint(Marker)}.
|
* This gets called after every batch of calls to {@link #clearMarkers()} and {@link #onNewMarker(Marker)}.
|
||||||
*/
|
*/
|
||||||
void onNewWaypointsDone();
|
void onNewMarkersDone();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,32 +29,32 @@ class TrackDataManager {
|
|||||||
private static final String TAG = TrackDataManager.class.getSimpleName();
|
private static final String TAG = TrackDataManager.class.getSimpleName();
|
||||||
|
|
||||||
private final Set<TrackDataListener> dataListenerTracks = new HashSet<>();
|
private final Set<TrackDataListener> dataListenerTracks = new HashSet<>();
|
||||||
private final Set<TrackDataListener> dataListenerWaypoints = new HashSet<>();
|
private final Set<TrackDataListener> dataListenerMarkers = new HashSet<>();
|
||||||
private final Set<TrackDataListener> dataListenerTrackPoints_SampledIn = new HashSet<>();
|
private final Set<TrackDataListener> dataListenerTrackPoints_SampledIn = new HashSet<>();
|
||||||
private final Set<TrackDataListener> dataListenerTrackPoints_SampledOut = new HashSet<>();
|
private final Set<TrackDataListener> dataListenerTrackPoints_SampledOut = new HashSet<>();
|
||||||
|
|
||||||
void registerTrackDataListener(final TrackDataListener trackDataListener, boolean tracksTable, boolean waypointsTable, boolean trackPointsTable_SampleIn, boolean trackPointsTable_SampleOut) {
|
void registerTrackDataListener(final TrackDataListener trackDataListener, boolean tracksTable, boolean markersTable, boolean trackPointsTable_SampleIn, boolean trackPointsTable_SampleOut) {
|
||||||
if (tracksTable) dataListenerTracks.add(trackDataListener);
|
if (tracksTable) dataListenerTracks.add(trackDataListener);
|
||||||
if (waypointsTable) dataListenerWaypoints.add(trackDataListener);
|
if (markersTable) dataListenerMarkers.add(trackDataListener);
|
||||||
if (trackPointsTable_SampleIn) dataListenerTrackPoints_SampledIn.add(trackDataListener);
|
if (trackPointsTable_SampleIn) dataListenerTrackPoints_SampledIn.add(trackDataListener);
|
||||||
if (trackPointsTable_SampleOut) dataListenerTrackPoints_SampledOut.add(trackDataListener);
|
if (trackPointsTable_SampleOut) dataListenerTrackPoints_SampledOut.add(trackDataListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregisterTrackDataListener(TrackDataListener trackDataListener) {
|
void unregisterTrackDataListener(TrackDataListener trackDataListener) {
|
||||||
dataListenerTracks.add(trackDataListener);
|
dataListenerTracks.add(trackDataListener);
|
||||||
dataListenerWaypoints.add(trackDataListener);
|
dataListenerMarkers.add(trackDataListener);
|
||||||
dataListenerTrackPoints_SampledIn.add(trackDataListener);
|
dataListenerTrackPoints_SampledIn.add(trackDataListener);
|
||||||
dataListenerTrackPoints_SampledOut.add(trackDataListener);
|
dataListenerTrackPoints_SampledOut.add(trackDataListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean hasListeners() {
|
boolean hasListeners() {
|
||||||
return dataListenerTracks.size() + dataListenerWaypoints.size() + dataListenerTrackPoints_SampledIn.size() + dataListenerTrackPoints_SampledOut.size() > 0;
|
return dataListenerTracks.size() + dataListenerMarkers.size() + dataListenerTrackPoints_SampledIn.size() + dataListenerTrackPoints_SampledOut.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getNumberOfListeners() {
|
int getNumberOfListeners() {
|
||||||
Set<TrackDataListener> listener = new HashSet<>();
|
Set<TrackDataListener> listener = new HashSet<>();
|
||||||
listener.addAll(dataListenerTracks);
|
listener.addAll(dataListenerTracks);
|
||||||
listener.addAll(dataListenerWaypoints);
|
listener.addAll(dataListenerMarkers);
|
||||||
listener.addAll(dataListenerTrackPoints_SampledIn);
|
listener.addAll(dataListenerTrackPoints_SampledIn);
|
||||||
listener.addAll(dataListenerTrackPoints_SampledOut);
|
listener.addAll(dataListenerTrackPoints_SampledOut);
|
||||||
|
|
||||||
@@ -65,8 +65,8 @@ class TrackDataManager {
|
|||||||
return dataListenerTracks.contains(listener);
|
return dataListenerTracks.contains(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean listensForWaypoints(TrackDataListener listener) {
|
boolean listensForMarkers(TrackDataListener listener) {
|
||||||
return dataListenerWaypoints.contains(listener);
|
return dataListenerMarkers.contains(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean listensForTrackPoints_SampledIn(TrackDataListener listener) {
|
boolean listensForTrackPoints_SampledIn(TrackDataListener listener) {
|
||||||
@@ -81,8 +81,8 @@ class TrackDataManager {
|
|||||||
return dataListenerTracks;
|
return dataListenerTracks;
|
||||||
}
|
}
|
||||||
|
|
||||||
Set<TrackDataListener> getListenerWaypoints() {
|
Set<TrackDataListener> getListenerMarkers() {
|
||||||
return dataListenerWaypoints;
|
return dataListenerMarkers;
|
||||||
}
|
}
|
||||||
|
|
||||||
Set<TrackDataListener> getListenerTrackPoints_SampledIn() {
|
Set<TrackDataListener> getListenerTrackPoints_SampledIn() {
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ import java.util.Objects;
|
|||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A waypoint.
|
|
||||||
*
|
|
||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -59,10 +59,12 @@ public class TrackPoint {
|
|||||||
location.setTime(time);
|
location.setTime(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated //See #316
|
||||||
public static TrackPoint createPause() {
|
public static TrackPoint createPause() {
|
||||||
return createPauseWithTime(System.currentTimeMillis());
|
return createPauseWithTime(System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated //See #316
|
||||||
public static TrackPoint createPauseWithTime(long time) {
|
public static TrackPoint createPauseWithTime(long time) {
|
||||||
Location pause = new Location(LocationManager.GPS_PROVIDER);
|
Location pause = new Location(LocationManager.GPS_PROVIDER);
|
||||||
pause.setLongitude(0);
|
pause.setLongitude(0);
|
||||||
@@ -71,10 +73,12 @@ public class TrackPoint {
|
|||||||
return new TrackPoint(pause);
|
return new TrackPoint(pause);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated //See #316
|
||||||
public static TrackPoint createResume() {
|
public static TrackPoint createResume() {
|
||||||
return createResumeWithTime(System.currentTimeMillis());
|
return createResumeWithTime(System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated //See #316
|
||||||
public static TrackPoint createResumeWithTime(long time) {
|
public static TrackPoint createResumeWithTime(long time) {
|
||||||
Location resume = new Location(LocationManager.GPS_PROVIDER);
|
Location resume = new Location(LocationManager.GPS_PROVIDER);
|
||||||
resume.setLongitude(0);
|
resume.setLongitude(0);
|
||||||
|
|||||||
@@ -242,21 +242,21 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearWaypoints() {
|
public void clearMarkers() {
|
||||||
if (isResumed()) {
|
if (isResumed()) {
|
||||||
chartView.clearWaypoints();
|
chartView.clearWaypoints();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewWaypoint(Marker waypoint) {
|
public void onNewMarker(Marker marker) {
|
||||||
if (isResumed() && waypoint != null && LocationUtils.isValidLocation(waypoint.getLocation())) {
|
if (isResumed() && marker != null && LocationUtils.isValidLocation(marker.getLocation())) {
|
||||||
chartView.addWaypoint(waypoint);
|
chartView.addWaypoint(marker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewWaypointsDone() {
|
public void onNewMarkersDone() {
|
||||||
if (isResumed()) {
|
if (isResumed()) {
|
||||||
runOnUiThread(updateChart);
|
runOnUiThread(updateChart);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,23 +64,23 @@ public class DeleteMarkerDialogFragment extends DialogFragment {
|
|||||||
@Override
|
@Override
|
||||||
@NonNull
|
@NonNull
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
final Marker.Id[] waypointIds = (Marker.Id[]) getArguments().getParcelableArray(KEY_MARKER_IDS);
|
final Marker.Id[] markerIds = (Marker.Id[]) getArguments().getParcelableArray(KEY_MARKER_IDS);
|
||||||
|
|
||||||
final FragmentActivity fragmentActivity = getActivity();
|
final FragmentActivity fragmentActivity = getActivity();
|
||||||
int titleId;
|
int titleId;
|
||||||
int messageId;
|
int messageId;
|
||||||
if (waypointIds == null) {
|
if (markerIds == null) {
|
||||||
titleId = R.string.generic_delete_all_confirm_title;
|
titleId = R.string.generic_delete_all_confirm_title;
|
||||||
messageId = R.string.marker_delete_all_confirm_message;
|
messageId = R.string.marker_delete_all_confirm_message;
|
||||||
} else {
|
} else {
|
||||||
titleId = waypointIds.length > 1 ? R.string.generic_delete_selected_confirm_title : R.string.marker_delete_one_confirm_title;
|
titleId = markerIds.length > 1 ? R.string.generic_delete_selected_confirm_title : R.string.marker_delete_one_confirm_title;
|
||||||
messageId = waypointIds.length > 1 ? R.string.marker_delete_multiple_confirm_message : R.string.marker_delete_one_confirm_message;
|
messageId = markerIds.length > 1 ? R.string.marker_delete_multiple_confirm_message : R.string.marker_delete_one_confirm_message;
|
||||||
}
|
}
|
||||||
return DialogUtils.createConfirmationDialog(
|
return DialogUtils.createConfirmationDialog(
|
||||||
fragmentActivity, titleId, getString(messageId), (dialog, which) -> new Thread(() -> {
|
fragmentActivity, titleId, getString(messageId), (dialog, which) -> new Thread(() -> {
|
||||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(fragmentActivity);
|
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(fragmentActivity);
|
||||||
for (Marker.Id waypointId : waypointIds) {
|
for (Marker.Id markerId : markerIds) {
|
||||||
contentProviderUtils.deleteMarker(getContext(), waypointId);
|
contentProviderUtils.deleteMarker(getContext(), markerId);
|
||||||
}
|
}
|
||||||
caller.onDeleteMarkerDone();
|
caller.onDeleteMarkerDone();
|
||||||
}).start());
|
}).start());
|
||||||
|
|||||||
@@ -350,17 +350,17 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearWaypoints() {
|
public void clearMarkers() {
|
||||||
// We don't care.
|
// We don't care.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewWaypoint(Marker wpt) {
|
public void onNewMarker(Marker marker) {
|
||||||
// We don't care.
|
// We don't care.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewWaypointsDone() {
|
public void onNewMarkersDone() {
|
||||||
// We don't care.
|
// We don't care.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ public class LocationUtils {
|
|||||||
* @return true if the location is a valid location.
|
* @return true if the location is a valid location.
|
||||||
*/
|
*/
|
||||||
//TODO Move to TrackPoint
|
//TODO Move to TrackPoint
|
||||||
|
@Deprecated //See #316
|
||||||
public static boolean isValidLocation(Location location) {
|
public static boolean isValidLocation(Location location) {
|
||||||
return location != null
|
return location != null
|
||||||
&& Math.abs(location.getLatitude()) <= 90
|
&& Math.abs(location.getLatitude()) <= 90
|
||||||
|
|||||||
Reference in New Issue
Block a user