Release Notes


  • Routing
    • faster execution of Routing.deleteAllCurrentRoutePoints()
    • calculation of emergency routes - no penalty driving in the opposite direction until first junction


  • Routing
    • calculation of emergency routes with minimization of driving in the opposite direction


  • SDK initialization
    • device activation possible crash fix


  • Navigation
    • NavigationStatusListener.onNavigationStopped() may have been called when starting navigation even when navigation was not running fixed
  • Routing
    • calculating emergency routes based on current vehicle dimensions
  • UI
    • ToolsButton class implementing standard tools menu buttons added
  • Common
    • SDK modules were not initialized during SDK engines restart causing SdkNotInitialized exception fix
    • HTTPS communication not working on devices running Android 6 or Android 7 fixed
    • missing translation (4.9.3 version bug) fixed


  • Map fragment
    • showing search results on map fix (public void MapFragment.showOnMap(@NonNull SearchResult searchResult))


  • MapFragment, SearchAddressFragment and SearchPoiFragment
    • handling back button fix on fix (worked only for the first time the fragment became visible in 4.9.1)


  • MapFragment, SearchAddressFragment and SearchPoiFragment
    • handling back button fixed - to work properly, do not inherit onBackPressed() in your activity, use OnBackPressedDispatcher instead, e.g.
      getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true)
        public void handleOnBackPressed()
          // do whatever you want, e.g. finish the activity


  • Routing
    • CurrentRoutePointsListener - onRoutePointsDeleted was not called when a route point was deleted fix
  • Map fragment
    • MapClickListener added - called after a click on the map
      void MapFragment.addOnMapClickedListener(@NonNull MapClickedListener listener);
      void MapFragment.removeOnMapClickedListener(@NonNull MapClickedListener listener);
    • missing remove MapReadyListener method added
      void MapFragment.removeOnMapReadyListener(@NonNull MapReadyListener listener);


  • Map fragment
    • methods to enable/disable using compass sensor in 2D map rotate mode added
      void MapFragment.setUseCompass(boolean useCompass);
      boolean MapFragment.isCompassUsed();


  • Routing
    • possible crash during navigation when route recomputation fails fix
  • Favorites
    • favorites fragment - new favorites group name fix


  • Routing
    • possible deadlock while calculating a route fix


  • Favorites
    • favorites fragment - rename and delete favorites group implemented


  • General
    • setting night mode for all fragments - setNightMode(boolean nightModeOn) moved from MapFragment to MpfcEngine
      void MpfcEngine.setNightMode(boolean nightModeOn);
      boolean MpfcEngine.isNightMode();
  • Search
    • removing items from search history methods added
      boolean SearchHistory.removeSearchResult(@NonNull String searchResultId);
      void SearchHistory.clearSearchHistory();


  • Routing
    • deleted route points are still present after restart bug fixed


  • Navigation
    • methods to easily get silent and beep instructions voices IDs added
      @NonNull String InstructionsVoicesManager.getSilentInstructionVoiceId();    
      @NonNull String InstructionsVoicesManager.getBeepInstructionVoiceId();
    • NavigationStatusListener callback method added. Called when GPS signal is lost or acquired.
      void NavigationStatusListener.onGpsSignalChanged(boolean hasSignal);
  • Search
    • search history items categorized
      void SearchHistory.addSearchResult(@NonNull String searchHistoryCategory, @NonNull SearchResult searchResult);
      @NonNull List<SearchHistoryResult> SearchHistory.getSearchHistoryResults(@Nullable String searchHistoryCategory);
      void Search.startHistorySearch(@Nullable String searchHistoryCategory, @Nullable String filter, @NonNull SearchResultsListener resultsListener);
    • SearchAddressFragment - method to change speech recognition button visibility added
      void SearchAddressFragment.setSpeechRecognitionButtonVisibility(boolean visible);
      boolean SearchAddressFragment.isSpeechRecognitionButtonVisible();


  • Routing
    • adding multiple route points method added
      void Routing.setRoutePoints(@NonNull List<RoutePointParams> routePointsParams, @Nullable RoutePointsListener listener);


  • Routing
    • better logging of route points adding failures


  • Routing
    • adding a route point listener failure reason added
      void Routing.onAddingRoutePointFailed(@NonNull AddingRoutePointErrorCode errorCode);
  • Search
    • POI search possible crash fix


  • Routing
    • creating new and deleting existing vehicle profile implemented
      @Nullable VehicleParams VehiclesManager.createNewVehicle(@NonNull Vehicle.VehicleType vehicleType, @NonNull String vehicleName, boolean setAsActive);
      boolean VehiclesManager.deleteExistingVehicle(@NonNull String vehicleId);    


  • App data manager
    • map and traffic data downloading use HTTPS now


  • SDK initialization
    • device activation possible crash fix


  • SDK initialization
    • device activation possible failure fix


  • Navigation
    • scheduled emergency mode activation fix


  • Routing
    • emergency mode routes using blocked roads fix


  • Map fragment
    • methods to set/get map center added
      void MapFragment.setMapCenter(@NonNull Coordinate mapCenterCoordinate);
      @NonNull Coordinate MapFragment.getMapCenter();


  • Map fragment
    • editing routing link from map crash fix


  • Routing
    • emergency mode routes using blocked roads fix


  • Navigation
    • scheduled emergency mode gets started only after diverting from current navigation route and violating traffic rules
  • Common
    • more translation languages added


  • Map fragment
    • memory leaks after hiding and showing the map fragment again fix


  • Common
    • internal optimizations
    • memory leaks fixes
  • Routing
    • navigation route itinerary fragment maneuvers icons color fix
  • Map fragment
    • traffic icon in location info items list after click on map fix
  • Navigation
    • method to mute navigation sounds added
      void InstructionsVoicesManager.setMuted(boolean muted);
      boolean InstructionsVoicesManager.isMuted();


  • Navigation
    • head-up display close button added
    • computing route on very long distances when emergency mode is activated fix


  • Imports
    • method to update incremental import data added
      void ImportsManager.updateIncrementalImportData(@NonNull List<Pair<Long, ImportData>> importIdAndDataList, @Nullable UpdateIncrementalImportDataListener listener);    


  • 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