Release Notes


  • Navigation
    • possible route not found when emergency mode is on fix
    • NavigationStatusListener callback method added. Called after deviating from current route and a new route was not found.
    void NavigationStatusListener.onRouteRecomputationFailed(int oldRouteId);


  • Map fragment
    • possible crash after map fragment window size change fix


  • Map fragment
    • info panel width after map fragment is resized fix


  • UI
    • calculate route MenuButton added


  • Imports
    • incremental imports listener parameter that receives inserted data IDs added
      void ImportsManager.onIncrementalImportDataAddingFinished(boolean success, @Nullable long[] dataIds);
    • methods to delete incremental imports category and data added
      void ImportsManager.deleteIncrementalImportCategory(@NonNull String categoryName, @Nullable DeleteIncrementalImportCategoryListener listener);
      void ImportsManager.deleteIncrementalImportData(@NonNull long[] importDataIds, @Nullable DeleteIncrementalImportDataListener listener);


  • UI
    • NavigateButton class implementing standard menu navigate button added


  • UI
    • MenuButton class implementing standard menu buttons added
  • UI
    • Colors class implementing methods to get current color theme values added
      @NonNull Colors MpfcEngine.getColorsModule();


  • Favorites
    • favorites fragment - rename favorite menu item added
  • Navigation
    • starting navigation using Navigation.start(int routeId) for nonexisting routeId crash fix - NavigationStatusListener.onNavigationFailedToStart(INVALID_ROUTE_ID) listener will be called


  • App data manager
    • download app data fails without previously getting app data list fix
    • app data download possible failure codes added (AppDataManager.DownloadErrorCode.NO_INTERNET and AppDataManager.DownloadErrorCode.FAILED)
  • Common
    • target SDK version updated to 33


  • Favorites
    • favorites fragment (favorites.FavoritesFragment) and view (favorites.FavoritesView) implemented


  • Map fragment
    • small and large info panel height fix
  • Search
    • SearchAddressFragment views are not visible after a search result is shown on map and the fragment reappears


  • Routing
    • get routing point ID method added
    int RoutePoint.getId();
  • Navigation
    • showing detour dialog from map toolbar possible crash fix


  • Navigation
    • navigation history fragment (navigation.NavigationHistoryFragment) and view (navigation.NavigationHistoryView) implemented
  • Traffic
    • closing one way roads because of a traffic incident fix
  • Routing
    • calling Routing.setRoutePoint(@NonNull RoutePoint.RoutePointType type, @NonNull Coordinate coordinate, @Nullable String name, @Nullable RoutePointListener listener) with null for parameter “name” crash fix


  • Routing
    • route point added/deleted listener added
    void Routing.addCurrentRoutePointsListener(@NonNull CurrentRoutePointsListener listener);
    void Routing.removeCurrentRoutePointsListener(@NonNull CurrentRoutePointsListener listener);


  • Map fragment
    • traffic icons appearance after activity containing map fragment is restored from background fix


  • Search
    • SearchPoiFragment not searching within imported data fix
  • General
    • log files fail to create bug fix


  • Search
    • missing search history in one line search in SearchAddressFragment fix
    • search history for one line and multi line SearchAddressFragment united
    • SearchResult is from search history test added
    boolean SearchResult.isHistory();
  • App data manager
    • AppData.Type.CAMERA type added (speed cameras and traffic light cameras)


  • Map fragment
    • occasionally wrongly positioned map toolbar after map fragment size change fix
  • Navigation
    • getting current emergency status method updated to prevent potential deadlocks
    void EmergencyModeManager.getEmergencyModeStatus(@NonNull EmergencyModeStatusListener emergencyModeStatusListener);


  • Map fragment
    • maneuver panel sometimes might not be visible bug fix


  • Map fragment
    • possible UI freezing trying to show map while a route is being computed fix
  • Localization
    • spanish translation added


  • Routing
    • memory leak computing and selecting alternative routes fix


  • Support
    • MINIMAL log level added, STANDARD (default) log level updated to track all SDK calls
  • Routing
    • method to get all current route points on map added
    @Nullable List<RoutePoint> Routing.getCurrentRoutePoints();


  • Routing
    • after changing active vehicle and/or its parameters the changes might not be used for subsequent route computation fix
    • deleting waypoint during navigation does not result in route recomputation fix
  • App data manager
    • returning installed app data type fix


  • Map fragment
    • hardware map rendering fixes


  • Map fragment
    • detour added to map long click menu while navigating
    • signposts and lane panels visibility fix
  • Routing
    • truck dimension parameters not saved nor used for route computation fix


  • Map fragment
    • long click on map menu added
    • POI visibility settings added to map long click menu
    • stop navigation command added to map long click menu
  • General
    • method to get current license key added
    @NonNull String MpfcEngine.getLicenseKey();


  • Map fragment
    • incorrect info panel width after map fragment is resized fix


  • General
    • internal changes made to prevent SDK views executing methods before all engines are fully initialized
  • Support
    • debug logging mode added to help solving potential issues
    void Support.setLogLevel(@NonNull LogLevel logLevel);
    @NonNull LogLevel Support.getLogLevel();  


  • Navigation
    • changing destination while navigating possible failure fix


  • Routing & Map fragment
    • choosing among computed alternative routes on map fragment implemented - just call Routing.selectRouteOnMap() instead of Routing.selectRouteAlternative(…)
    void Routing.selectRouteOnMap();
  • Navigation
    • NavigationStatusListener callback method added. Called when a route alternative is selected on map after Routing.selectRouteOnMap().
    void NavigationStatusListener.onRouteAlternativeSelected(int routeId);
  • Map fragment
    • occasional crash trying to draw signposts panel fix
  • Routing
    • deleting current navigation route crash fix


  • Search
    • search address fragment possible crash fix


  • Map rendering
    • possible crash after activity containing map fragment is restored from background fix


  • Map fragment
    • occasional info panel crash fix


  • Map rendering
    • occasional black map screen after activity containing map fragment is restored from background fix


  • Search
    • search POI fragment (search.SearchPoiFragment) and view (search.SearchPoiView) implemented
    • use SearchPoiFragment.SearchResultClickListener to show search results on map, set as navigation destination, etc
    public void SearchPoiFragment.addSearchResultClickListener(@NonNull SearchResultClickListener listener);  
    public void SearchPoiFragment.removeSearchResultClickListener(@NonNull SearchResultClickListener listener);


  • Search
    • multiline search implemented in search address fragment (search.SearchAddressFragment)
    • added SearchAddressView XML attribute “app:search_address_view_type” with values “=singleline” and “=multiline” to set initial search address layout type


  • Search
    • search address fragment (search.SearchAddressFragment) and view (search.SearchAddressView) implemented
    • use SearchAddressFragment.SearchResultClickListener to show search results on map, set as navigation destination, etc
    public void SearchAddressFragment.addSearchResultClickListener(@NonNull SearchResultClickListener listener);  
    public void SearchAddressFragment.removeSearchResultClickListener(@NonNull SearchResultClickListener listener);


  • Routing
    • navigation route itinerary fragment possible crash fix


  • Routing
    • navigation route itinerary fragment containing list of turn by turn navigation instructions (routing.RouteItineraryFragment) and route itinerary view (routing.RouteItineraryView containing RouteItineraryFragment) added
  • Map fragment
    • menu button added (invisible by default)
    • map control clicked listener added
      • MANEUVER_PANEL - visible during navigation, expected action is to show navigation route itinerary (see RouteItineraryFragment or RouteItineraryView)
      • NO_SOUND_BUTTON - visible during navigation when no navigation voice is selected, expected action is to enable user to choose a navigation instructions sound
      • MENU_BUTTON - hidden by default, can be used to show an app menu
      void MapControls.addMapControlClickedListener(@NonNull MapControlsListener listener);
      void MapControls.removeMapControlClickedListener(@NonNull MapControlsListener listener);
  • Navigation
    • NavigationStatusListener.onNoSoundButtonClicked() removed, use Map.MapControlsListener.onMapControlClicked listener instead
    • failed to recompute route during navigation more than once bug fixed


  • All engines
    • possible crash handling new GPS position while engines are being restarted fix


  • Map fragment
    • editing road closed for routing from map crash fix
    • MapFragment.getMapControls called after fragment recreation may return old fragment map controls fix


  • Map fragment
    • head-up display implemented - call MapFragment.setHUDMode(@NonNull HudMode mode) to activate/deactivate head-up display mode during navigation
    public void MapFragment.setHUDMode(@NonNull HudMode mode);
    public @NonNull HudMode MapFragment.getHUDMode();
    • map controls visibility controller class moved from Map to MapFragment
    public @NonNull MapControls MapFragment.getMapControls();


  • Map
    • added button visible during navigation indicating currently selected navigation sound is silent
  • Navigation
    • callback when the silent navigation sound button is clicked added - app should respond by letting user to choose a navigation voice
    void NavigationStatusListener.onNoSoundButtonClicked();
  • Support
    • sending SDK logs file provider changed to include app ID to ensure the provider name is unique


  • Contexts
    • context parameter removed from majority of SDK interface methods
  • Settings
    • SDK persistent settings moved to private file
  • Licensing
    • get license expiration date method added
    @NonNull Calendar MpfcEngine.getLicenseExpirationDate();
  • Support
    • send log files method return value changed
    @NonNull SendLogFilesResult Support.sendLogFiles(@NonNull Context context);


  • Imports
    • data added via incremental import visible on map also in software renderer
    • incremental import user defined icon hotspot added
    void ImportsManager.createIncrementalImportCategory(@NonNull String categoryName, @Nullable String icon, @FloatRange(from = 0.0, to = 1.0) float hotSpotX, @FloatRange(from = 0.0, to = 1.0) float hotSpotY, @NonNull CreateIncrementalImportCategoryListener listener);
  • Search
    • search within incremental imports is not accent sensitive any more


  • Imports
    • crash fixes


  • Imports
    • data added via incremental import visible on map now in hardware renderer
    • creating incremental import category listener parameter changed
      void CreateIncrementalImportCategoryListener.onIncrementalImportCategoryCreationFinished(@NonNull CreateIncrementalImportCategoryResult result);
  • Search
    • SearchResultsListener.SearchErrorCode enum value added (FAILED_INVALID_SEARCH_RADIUS)


  • Imports
    • imports manager module created
      @NonNull ImportsManager MpfcEngine.getImportsModule() throws SdkException;
    • MCA file imports moved from AppDataManager to ImportsManager
      void ImportsManager.importFile(@NonNull Context context, @NonNull List<Uri> sourceUris, boolean overwriteExisting, @NonNull FileImportListener importListener);
    • incremental imports implemented - data is stored and can be searched, not visible on map for now though
      void ImportsManager.createIncrementalImportCategory(@NonNull String categoryName, @Nullable String icon, @NonNull CreateIncrementalImportCategoryListener listener);
      void ImportsManager.addIncrementalImportData(@NonNull String categoryName, @NonNull List<ImportData> importDataList, @NonNull AddIncrementalImportDataListener listener);    
      void getImportCategories(@Nullable ImportCategory.Type importType, @NonNull ImportCategoriesListener listener);


  • Navigation instructions
    • beep instructions voice type added
    • get instructions voice type method added
      @NonNull Type InstructionsVoice.getType();
    • retrieving available instructions by type - InstructionsVoicesManager.getInstructionsVoices type parameter added
      void InstructionsVoicesManager.getInstructionsVoices(@NonNull Context context, @Nullable InstructionsVoice.Type type, @NonNull InstructionsVoicesListener voicesListener);
  • Search
    • new POI category IDs added in 1.3.0 fix


  • Search
    • POI categories update


  • Map rendering
    • faster low resolution software renderer for large devices with high pixel density added
  • Info panels
    • satellites count info panel showing always zero fix


  • Navigation
    • possible unwanted stop of navigation after acquiring GPS signal fix


  • Search
    • adding search results to search history implemented
      void Search.getSearchHistoryManager().addSearchResult(@NonNull SearchResult searchResult);       
    • search within search history implemented
      void Search.startHistorySearch(@Nullable String filter, @NonNull SearchResultsListener resultsListener);       
  • Navigation
    • restarting SDK engines (e.g. after new map data download/delete) while currently navigating crash fix


  • Traffic
    • turning traffic avoidance on/off problems fix


  • SDK initialization
    • device activation possible crash fix


  • Initial release