androidmapboxturn-by-turnmapbox-android

Mapbox Navigation `onProgressChange()` not fired when 0.4.0-SNAPSHOT used


I've implemented Mapbox Navigation and lately got it working, now I want to update navigation from 0.3.1 to 0.4.0-SNAPSHOT, unfortunately after update onProgressChange() not being fired even though I haven't made any changes to code.

NOTE: onLocationChanged works in both cases.

EDIT

NOTE: 0.3.1 still fires onProgressChange() although its speed is 0.0, but not 0.4.0-SNAPSHOT

public class MapActivity implements MapboxMap.OnMarkerClickListener
        ,OnMapReadyCallback, AlertLevelChangeListener, ProgressChangeListener, OffRouteListener
        ,NavigationEventListener, LocationEngineListener{


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        fabStartNavigation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // star Navigation
                startNavigation();
            }
        });
   }


    @Override
    protected void onDestroy() {
        super.onDestroy();

        // Remove all navigation listeners being used
        mNavigation.removeNavigationEventListener(this);
        mNavigation.removeAlertLevelChangeListener(this);
        mNavigation.removeProgressChangeListener(this);
        mNavigation.removeOffRouteListener(this);

        // End the navigation session
        mNavigation.endNavigation();
        mapView.onDestroy();
    }


    //navigation controller
    private void startNavigation(){
        mNavigation.addNavigationEventListener(this);
        mNavigation.addAlertLevelChangeListener(this);
        mNavigation.addOffRouteListener(this);
        mNavigation.addProgressChangeListener(this);
        mNavigation.setSnapToRoute(true);

        /*LocationEngine mLocationEngine = LostLocationEngine.getLocationEngine(this);
//        mNavigation.setLocationEngine(mLocationEngine);*/
        mLocationEngine = LostLocationEngine.getLocationEngine(this);

        mLocationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);
        mLocationEngine.addLocationEngineListener(this);
        mLocationEngine.activate();

        mNavigation.startNavigation(mPlannedRoute);
    }

    // navigation listeners
    @Override
    public void onAlertLevelChange(int alertLevel, RouteProgress routeProgress) {
        switch (alertLevel) {
            case HIGH_ALERT_LEVEL:
                break;
            case MEDIUM_ALERT_LEVEL:
                break;
            case LOW_ALERT_LEVEL:
                break;
            case ARRIVE_ALERT_LEVEL:
                break;
            case NONE_ALERT_LEVEL:
                break;
            case DEPART_ALERT_LEVEL:
                break;
        }
    }

    @Override
    public void onProgressChange(Location location, RouteProgress routeProgress) {
    }

    @Override
    public void userOffRoute(Location location) {
    }

    @Override
    public void onRunning(boolean running) {
    }

    @Override
    public void onConnected() {
        mNavigation.setLocationEngine(mLocationEngine);
        mLocationEngine.requestLocationUpdates();
    }

    @Override
    public void onLocationChanged(Location location) {

    }
}

Solution

  • Is it possible that the location updates you are receiving have no speed values? If the speed value is 0 or less, onProgressChange doesn't get called. If this isn't the issue, any additional information and code snippets will help to troubleshoot this.