Expand Minimize Picture-in-picture Power Device Status Voice Recognition Skip Back Skip Forward Minus Plus Play Search
Documentation
Sidebar

Introduction

Mobile navigation allows map partners to easily display their maps as well as present visual and audio turn-by-turn prompts on the head unit.

Navigation apps have different behavior on the head unit than normal applications. The main differences are:

  • Navigation apps don't use base screen templates. Their main view is the video stream sent from the device.
  • Navigation apps can send audio via a binary stream. This will attenuate the current audio source and should be used for navigation commands.
  • Navigation apps can receive touch events from the video stream.
Note

In order to use SDL's Mobile Navigation feature, the app must have a minimum requirement of Android 4.4 (SDK 19). This is due to using Android's provided video encoder.

Configuring a Navigation App

The basic connection setup is similar for all apps. Please follow the Integration Basics guide for more information.

In order to create a navigation app an appHMIType of NAVIGATION must be set in the SdlManager's Builder.

The second difference is the ability to call the setSdlSecurity(List<Class<? extends SdlSecurityBase>> secList) method from the SdlManager.Builder if connecting to an implementation of Core that requires secure video and audio streaming. This method requires an array of security libraries, which will extend the SdlSecurityBase class. These security libraries are provided by the OEMs themselves, and will only work for that OEM. There is no general catch-all security library.

SdlManager.Builder builder = new SdlManager.Builder(this, APP_ID, APP_NAME, listener);

Vector<AppHMIType> hmiTypes = new Vector<AppHMIType>();
hmiTypes.add(AppHMIType.NAVIGATION);
builder.setAppTypes(hmiTypes);

// Add security managers if Core requires secure video & audio streaming
List<Class<? extends SdlSecurityBase>> secList = new ArrayList<>();
secList.add(OEMSdlSecurity.class);
builder.setSdlSecurity(secList, <# Optional serviceEncryptionListener>);

MultiplexTransportConfig mtc = new MultiplexTransportConfig(this, APP_ID, MultiplexTransportConfig.FLAG_MULTI_SECURITY_OFF);
mtc.setRequiresHighBandwidth(true);
builder.setTransportType(transport);

sdlManager = builder.build();
sdlManager.start();
Must

When compiling your app for production, make sure to include all possible OEM security managers that you wish to support.

Keyboard Input

To present a keyboard (such as for searching for navigation destinations), you should use the ScreenManager's keyboard presentation feature. For more information, see the Popup Menus and Keyboards guide.

Head units running SDL Core v.6.0+ may support navigation-specific subscription buttons for the navigation template. These subscription buttons allow your user to manipulate the map using hard buttons located on car's center console or steering wheel. It is important to support these subscription buttons in order to provide your user with the expected in-car navigation user experience. This is especially true on head units that don't support touch input as there will be no other way for your user to manipulate the map. See Subscribing to System Buttons for a list of these navigation buttons.

View on GitHub.com
Previous Section Next Section