Modularization

VERSION 0.3.1056
PUBLIC PREVIEW

Navigation SDK for Android is only available upon request. Contact us to get started.

The architecture of TomTom SDKs is modular, meaning that each navigation component is independent of the others.

As a result of this modularization, components are easily replaced with ones from other sources or omitted when they are not needed. Modularity makes it easier to change the standard SDK to address a specific use case.

These replaceable components are referred to as engines.

Orchestrator

The Navigation module depends on engines to orchestrate a pipeline after each location update. Different engines are used during different parts of the navigation flow, as shown in the following figure.

ss navigation flow

The orchestrator contains two main checks that determine if the calculation should continue, or stop for a given location update. After matching a location to the map and providing location context, the pipeline stops if navigation:

  • is in free driving mode (i.e., there is no route).
  • has detected a deviation from the route.

If none of the conditions is met, the flow proceeds with calculating route progress. A deviation event stops the rest of the pipeline from executing and switches navigation to free driving mode.

Engines

The orchestrator works with the following engines:

The LocationProvider is part of the Location module. All of the other engines are in the Navigation module.

Customized engines are specified in two ways:

  • During creation of the NavigationConfiguration object.
  • Dynamically on an existing TomTomNavigation object.
    1tomTomNavigation.setLocationProvider(locationProvider)
    2tomTomNavigation.setMapMatchingEngine(mapMatchingEngine)
    3tomTomNavigation.setLocationContextProviderEngine(locationContextProviderEngine)
    4tomTomNavigation.setGuidanceEngine(guidanceEngine)
    5tomTomNavigation.setRouteProgressEngine(routeProgressEngine)
    6tomTomNavigation.setRouteTrackingEngine(routeTrackingEngine)
    7tomTomNavigation.setArrivalDetectionEngine(arrivalDetectionEngine)

Next steps

Since you have learned about our modular architecture, here are recommendations for the next steps: