Turn-by-Turn Navigation for Walking and Driving
- Do not follow instructions that may lead to an unsafe or illegal situation.
- Obey all local laws.
- Be aware that using a mobile phone or some of its features while driving may be prohibited.
- Always keep hands free to operate the vehicle while driving.
- The first priority while driving should be road safety.
SDK for Android supports navigation on pedestrian , truck, and car routes. Using this feature, your app can check the current device position against a calculated route and get just-in-time navigational instructions. Both visual and audio instructions are supported.
SDK for Android can also track the current position and display it on the map without a calculated route.

Navigation Example on GitHub
You can find examples that demonstrate the navigation feature in Turn by Turn Navigation and Advanced Navigation projects at https://github.com/heremaps/.
Background Navigation
If you are using Turn-by-Turn Navigation Mode for driving, you can also set HERE SDK to perform guidance (including voice instructions and event callbacks) while the app is in the background. However, unlike the foreground navigation scenario, HERE SDK does not stream map data during background navigation on Android. To properly support background navigation for these devices, HERE SDK requires your app to preload map data (such as for the current city or state) using the MapLoader class.
android.permission.FOREGROUND_SERVICE
permission from the user. For more information, please refer to Android Pie behaviour change documentation. Map Matching During Navigation
Map Matching is automatically enabled in both navigation mode and tracking mode. In simulation mode, the map-matched position is simulated along the route with a user-defined speed.
Tunnel Extrapolation
Tunnel extrapolation is also performed internally by NavigationManager
. It uses the last available position data which contains speed, orientation and GeoCoordinate
to estimate the position of your vehicle inside a tunnel. If your application listens to position updates from NavigationManager.PositionListener
, there are regular position updates during tunnel extrapolation. However, if your application also listens to the onPositionFixChanged()
callback from PositioningManager.OnPositionChangedListener
, then it receives this callback signifying a position fix change. (For more information on the OnPositionChangedListener
, see Positioning section.) If the road element at position
contains the tunnel
attribute, it implies that the current location is provided by tunnel extrapolation. Position updates during tunnel extrapolation should be treated the same way as regular updates.
// At startup, have a member variable position manager setup
// and listening to events
positioningManager = PositioningManager.getInstance();
positioningManager.addListener(
new WeakReference<PositioningManager.OnPositionChangedListener>(this);
positioningManager.start(LocationMethod.GPS_NETWORK);
......
// upon callback, determine if tunnel extrapolation is active
public void onPositionFixChanged(LocationMethod method, LocationStatus status) {
if (method == LocationMethod.GPS) {
boolean isExtrapolated =
((positioningManager.getRoadElement() != null) &&
((positioningManager.getRoadElement().getAttributes()
.contains(RoadElement.Attribute.TUNNEL))));
boolean hasGps = status == LocationStatus.AVAILABLE;
}
}
Natural Guidance
NavigationManager.setNaturalGuidanceMode()
method can be used to enable natural guidance. Natural guidance refers to a type of dynamic information available during navigation where route guidance instructions contain contextual elements around a decision point. These contextual elements may include services, cartographic features, traffic signals, and stop signs. Some examples of natural guidance instructions are: - "Go past the park on your right, then turn left at Anderson school on Bayview street"
- "Go through the traffic light and turn right before the petrol station"
- "Continue on your route passing the dome building on your right"
NavigationManager.NaturalGuidanceMode
enumerations. Note that STOP_SIGN
, TRAFFIC_LIGHT
and JUNCTION
can be used together. To disable natural guidance, call setNaturalGuidanceMode(EnumSet<NaturalGuidanceMode>)
method with an empty EnumSet
. -
TRAFFIC_LIGHT
- Natural guidance for traffic lights -
STOP_SIGN
- Natural guidance for stop signs -
JUNCTION
- Natural guidance for junctions such as landmarks
- U.S. English
- U.K. English
- Italian
- Spanish
- German
- French