Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ public class SummaryModel {
public SummaryModel(Context context, DistanceFormatter distanceFormatter, RouteProgress progress,
@NavigationTimeFormat.Type int timeFormatType) {
distanceRemaining = distanceFormatter.formatDistance(progress.distanceRemaining()).toString();
timeRemaining = formatTimeRemaining(context, progress.durationRemaining());
double legDurationRemaining = progress.currentLegProgress().durationRemaining();
timeRemaining = formatTimeRemaining(context, legDurationRemaining);
Calendar time = Calendar.getInstance();
boolean isTwentyFourHourFormat = DateFormat.is24HourFormat(context);
arrivalTime = formatTime(time, progress.durationRemaining(), timeFormatType, isTwentyFourHourFormat);
arrivalTime = formatTime(time, legDurationRemaining, timeFormatType, isTwentyFourHourFormat);
}

String getDistanceRemaining() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ RouteProgress buildTestRouteProgress(DirectionsRoute route,
double distanceRemaining,
int stepIndex,
int legIndex) throws Exception {
double legDurationRemaining = route.legs().get(0).duration();
List<LegStep> steps = route.legs().get(legIndex).steps();
LegStep currentStep = steps.get(stepIndex);
String currentStepGeometry = currentStep.geometry();
Expand Down Expand Up @@ -53,6 +54,7 @@ RouteProgress buildTestRouteProgress(DirectionsRoute route,
return RouteProgress.builder()
.stepDistanceRemaining(stepDistanceRemaining)
.legDistanceRemaining(legDistanceRemaining)
.legDurationRemaining(legDurationRemaining)
.distanceRemaining(distanceRemaining)
.directionsRoute(route)
.currentStepPoints(currentStepPoints)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ void updateNavigationNotification(RouteProgress routeProgress) {
}

void shutdown(Context context) {
navigationNotification.onNavigationStopped(context);
if (navigationNotification != null) {
navigationNotification.onNavigationStopped(context);
}
navigationNotification = null;
shouldUpdate = false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.mapbox.api.directions.v5.models.StepIntersection;
import com.mapbox.geojson.Point;
import com.mapbox.navigator.NavigationStatus;
import com.mapbox.navigator.RouteState;
import com.mapbox.navigator.VoiceInstruction;
import com.mapbox.services.android.navigation.v5.routeprogress.CurrentLegAnnotation;
import com.mapbox.services.android.navigation.v5.routeprogress.RouteProgress;
Expand All @@ -26,6 +27,7 @@
class NavigationRouteProcessor {

private static final int ONE_INDEX = 1;
public static final int ONE_SECOND = 1000;
private RouteProgress previousRouteProgress;
private DirectionsRoute route;
private RouteLeg currentLeg;
Expand Down Expand Up @@ -69,6 +71,9 @@ private RouteProgress buildRouteProgressFrom(NavigationStatus status) {
double routeDistanceRemaining = routeDistanceRemaining(legDistanceRemaining, legIndex, route);
double stepDistanceRemaining = status.getRemainingStepDistance();
double stepDistanceTraveled = currentStep.distance() - stepDistanceRemaining;
double legDurationRemaining = status.getRouteState() == RouteState.TRACKING
? status.getRemainingLegDuration() / ONE_SECOND : route.duration();

currentLegAnnotation = createCurrentAnnotation(currentLegAnnotation, currentLeg, legDistanceRemaining);
StepIntersection currentIntersection = findCurrentIntersection(
currentIntersections, currentIntersectionDistances, stepDistanceTraveled
Expand All @@ -78,9 +83,10 @@ private RouteProgress buildRouteProgressFrom(NavigationStatus status) {
);

RouteProgress.Builder progressBuilder = RouteProgress.builder()
.stepDistanceRemaining(stepDistanceRemaining)
.legDistanceRemaining(legDistanceRemaining)
.distanceRemaining(routeDistanceRemaining)
.legDistanceRemaining(legDistanceRemaining)
.legDurationRemaining(legDurationRemaining)
.stepDistanceRemaining(stepDistanceRemaining)
.directionsRoute(route)
.currentStepPoints(currentStepPoints)
.upcomingStepPoints(upcomingStepPoints)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,7 @@ public double distanceTraveled() {
* @return long value representing the duration remaining till end of step, in unit seconds.
* @since 0.1.0
*/
public double durationRemaining() {
return (1 - fractionTraveled()) * routeLeg().duration();
}
public abstract double durationRemaining();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this is breaking SemVer @devotaaabel @danesfeder


/**
* Get the fraction traveled along the current leg, this is a float value between 0 and 1 and
Expand Down Expand Up @@ -217,6 +215,8 @@ public abstract static class Builder {

abstract int stepIndex();

abstract Builder durationRemaining(double durationRemaining);

abstract Builder stepDistanceRemaining(double stepDistanceRemaining);

abstract double stepDistanceRemaining();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ public int remainingWaypoints() {

abstract List<Pair<StepIntersection, Double>> intersectionDistancesAlongStep();

abstract double legDurationRemaining();

@AutoValue.Builder
public abstract static class Builder {

Expand All @@ -207,6 +209,10 @@ public abstract static class Builder {

abstract double legDistanceRemaining();

public abstract Builder legDurationRemaining(double durationRemaining);

abstract double legDurationRemaining();

public abstract Builder stepDistanceRemaining(double stepDistanceRemaining);

abstract double stepDistanceRemaining();
Expand Down Expand Up @@ -257,6 +263,7 @@ public RouteProgress build() {
.routeLeg(currentLeg)
.stepIndex(stepIndex())
.distanceRemaining(legDistanceRemaining())
.durationRemaining(legDurationRemaining())
.stepDistanceRemaining(stepDistanceRemaining())
.currentStepPoints(currentStepPoints())
.upcomingStepPoints(upcomingStepPoints())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ RouteProgress buildTestRouteProgress(DirectionsRoute route,
double distanceRemaining,
int stepIndex,
int legIndex) throws Exception {
double legDurationRemaining = route.legs().get(0).duration();
List<LegStep> steps = route.legs().get(legIndex).steps();
LegStep currentStep = steps.get(stepIndex);
List<Point> currentStepPoints = buildCurrentStepPoints(currentStep);
Expand All @@ -55,6 +56,7 @@ RouteProgress buildTestRouteProgress(DirectionsRoute route,
return RouteProgress.builder()
.stepDistanceRemaining(stepDistanceRemaining)
.legDistanceRemaining(legDistanceRemaining)
.legDurationRemaining(legDurationRemaining)
.distanceRemaining(distanceRemaining)
.directionsRoute(route)
.currentStepPoints(currentStepPoints)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,25 +158,6 @@ public void getDistanceTraveled_equalsLegDistanceAtEndOfLeg() throws Exception {
assertEquals(firstLegDistance, distanceTraveled, BaseTest.DELTA);
}

@Test
public void getDurationRemaining_equalsLegDurationAtBeginning() throws Exception {
RouteProgress routeProgress = buildBeginningOfLegRouteProgress();
DirectionsRoute route = routeProgress.directionsRoute();
RouteLeg firstLeg = route.legs().get(0);

Double firstLegDuration = firstLeg.duration();
double currentLegDurationRemaining = routeProgress.currentLegProgress().durationRemaining();

assertEquals(firstLegDuration, currentLegDurationRemaining, BaseTest.DELTA);
}

@Test
public void getDurationRemaining_equalsZeroAtEndOfLeg() throws Exception {
RouteProgress routeProgress = buildEndOfLegRouteProgress();

assertEquals(0, routeProgress.currentLegProgress().durationRemaining(), BaseTest.DELTA);
}

@Test
public void followOnStep_doesReturnTwoStepsAheadOfCurrent() throws Exception {
int stepIndex = 5;
Expand Down