Version 3.20.0 – October 30, 2024 [Stable] #
Changed
- Added new .accuracy() and .bearing() methods to ExternalLocation.Builder.
Version 3.19.0 – October 30, 2024 #
Added
- POI Selection: Added MapViewController#selectPoi(String) to programmatically select a POI by ID.
- Map Language Configuration: Introduced MapViewController#setLanguage(String) for changing the map’s language dynamically. You can also set a default language at initialization with the new language parameter in MapViewConfiguration.
- Event Callbacks:
- MapViewController#onPoiSelected(OnPoiSelectedCallback) and MapViewController#onPoiDeselected(OnPoiDeselectedCallback) to notify when a POI is selected or deselected.
- MapViewController#onExternalLinkClicked(OnExternalLinkClickedCallback), triggered when a user clicks an external link in the map. If unset, links will open in the default system browser.
- Stability Update: Added a consumer ProGuard rule to prevent crashes when minifyEnabled is enabled, addressing an issue related to the AltBeacon library.
Fixed
- Fixed a bug that caused invalid positions to be generated before a USER_NOT_IN_BUILDING status.
Version 3.18.0 – October 17, 2024 #
Added
- Added a new method NavigationListener#onProgress(NavigationProgress, Route) that receives the original Route calculated for the current navigation session. This is useful to simplify scenarios where you need a reference to the original route in each progress notification.
This new method has a default empty implementation that aims to mitigate compatibility breaks. Default methods are available from Java 8 onwards so compatibility breakage could occur.
Changed
- Deprecated the method NavigationListener#onProgress(NavigationProgress).
Version 3.17.1 – September 27, 2024 #
Added
- Improved floor changes when using BY_FOOT_VISUAL_ODOMETRY motion mode.
Fixed
- Fixed an issue that could cause delays in re-entering a building after receiving ‘out of building’ when positioning with GPS if no WiFi or BLE signals are received.
Version 3.17.0 – September 16, 2024 #
Added
- Added a new method navigateToPoi(String) to MapViewController. Also added a method overload navigateToPoi(String, AccessibilityMode) that lets you specify the desired AccessibilityMode.
Changed
- Added basic error and state management to allow MapView to notify the user whether positioning is starting, working correctly, or if there was an issue.
Version 3.16.2 – August 23, 2024 #
Changed
- Fixed some bug that returned always the default Indication#getOrientationType() of the indications when mapping these in NavigationProgress#fromMap()
Version 3.16.1 – August 07, 2024 #
Changed
- Performance was optimized for position calculation in buildings with multiple floor transition points.
Fixed
- Correctly detect when the user is not inside the building but is relatively close and is positioning only with GPS.
Version 3.16.0 – July 22, 2024 #
Added
- Added ExternalNavigation#toMap() and ExternalNavigation#fromMap() methods
Fixed
- Fix some exception thrown when using Poi#fromMap()
Version 3.15.0 – July 16, 2024 #
Added
- Introduced a new method tapAction(TapAction) to ForegroundServiceNotificationOptions.Builder. This method allows you to configure the behavior when tapping the Foreground Service Notification displayed when useForegroundService is set to true in your LocationRequest (or remote configuration). There are three predefined behaviors:
- LAUNCH_APP (default): Launches the app’s main activity using the information returned by PackageManager#getLaunchIntentForPackage(String).
- DO_NOTHING: No action is taken when the notification is tapped.
- LAUNCH_SETTINGS: Launches the operating system settings screen for the current app.
Changed
- Default Behavior: The Foreground Notification now launches the app by default when tapped (corresponding to the aforementioned LAUNCH_APP).
- Show Stop Action: The showStopAction option in ForegroundServiceNotificationOptions is now true by default. This causes the stop button to appear in the Foreground Service Notification, allowing users to stop positioning at any time. You can use your LocationListener callbacks to handle LocationStatus.STOPPED statuses in such a case.
Version 3.14.0 – June 28, 2024 #
Added
- Added a new method LocationManager#addExternalArData(ExternalArData). When combined with the motion mode BY_FOOT_VISUAL_ODOMETRY, the SDK will utilize visual odometry from the camera passed down when calling this method.The SDK does not access the camera internally, so to enable this motion mode, you must inject the readings using the new method.
This method is intended for internal use, don’t use it as it may change in future releases.
Changed
- Now the motion mode BY_FOOT_VISUAL_ODOMETRY is not deprecated.
Version 3.13.2 – June 04, 2024 [Stable] #
Changed
- Improved the information in the navigation callbacks of the new navigation mode added in version 3.13.0. There were some info from POI and PoiCategory that was incorrect in the previous version of the callbacks and now this has been fixed.
Version 3.13.1 – May 15, 2024 #
Fixed
- Fixed a crash that was thrown when refreshing the beacon scanning service while the app was running in the background and the targetSdkVersion of the app integrating the SDK was 34 or higher on Android 14 devices.
- Fixed a problem with requestNavigationUpdates(NavigationRequest, DirectionsRequest, Handler) that caused the navigation to not work when you called this method if the navigation had already been started.
Version 3.13.0 – May 03, 2024 #
ℹ️ NOTE: This version adds support for the new navigation callbacks introduced in the Map Viewer 1.99.0 version.
Make sure you update to this new 3.13.0 version, otherwise the NavigationListener callbacks (onStart(), onProgress(), onDestinationReached(), onCancellation() and onUserOutsideRoute()) won’t work at all.
In case you want to still use these callbacks in a previous version, contact us at support@situm.com.
Added
- New navigation type. When Map Viewer is present, you can use the navigation of the Map Viewer instead of the SDK navigation. This type of navigation improves routes, indications and performance.
Changed
- Improved positioning performance.
Version 3.12.0 – April 01, 2024 #
Added
- New method NavigationListener.onDestinationReached(Route).
- New way of setting the destination in the DirectionsRequest. You can set a POI as destination with DirectionsRequest.Builder().to(String poiIdentifier).
Deprecated
Version 3.11.2 – March 14, 2024 [Stable] #
Fixed
- Fixed a runtime crash when positioning with LocationRequest.Builder#useForegroundService() to true inside integrations that use targetSdkVersion >= 34 on Android 14.
Version 3.11.1 – February 21, 2024 #
Changed
- Improved the positioning performance in large buildings.
- Improved the orientation during positioning.
Version 3.11.0 – February 16, 2024 #
Added
- New class
MapViewDirectionsOptions
- New method
MapViewController.setOptions(MapViewDirectionsOptions)
used to define the options that the routes calculated by the MapView will use. You can see how to implement it here.
Changed
- Now it is possible to install a
- Improved the performance of GeofenceListener by removing irrelevant information in the API call that retrieves Geofences.
- and receive notifications even if the positioning has been already started.
Fixed
- Fixed a problem with the navigation in the MapView that was added in the version 3.10.0
Version 3.10.2 – February 15, 2024 #
Fixed
- Fixed how projections are computed when trying to project a point onto a route segment that is defined as a point instead of as a line. This led to issues when computing the navigation progress under specific circumstances.
Version 3.10.1 – February 02, 2024 #
Changed
- Improved the performance of GeofenceListener by removing irrelevant information in the API call that retrieves Geofences.
Version 3.10.0 – January 30, 2024 #
Added
- Two new methods DirectionsRequest.Builder().includedTags(List<String>) and DirectionsRequest.Builder().excludedTags(List<String>). These methods allow you to include or exclude paths based on their tags. To know more about how this works check this.
Fixed
- Solved a crash that happened sometimes during positioning on Android 14.
Version 3.9.3 -January 12,2024 #
Fixed
- Previously, there was an error with the navigation that affected versions 3.9.1 onwards. We fixed it in this version.
Version 3.9.2 -December 20,2023 #
This version and 3.9.1 contains a bug in navigation so they shouldn’t be used
Changed
- We have implemented a one-second maximum frequency limit for navigation updates. This improves performance by preventing multiple updates per second, especially when dead reckoning is active.
- If you were using the closest location in route from the NavigationProgress, take into account that this location will be updated at a maximum of 1 per second as well. If you want to have faster orientation updates, you’ll have to mix this position with the orientation of the location received in the LocationListener.
Version 3.9.1 -December 19,2023 #
Added
- New indication action PASS_THROUGH.
Changed
- Improved the Route calculated with DirectionsManager.requestDirections.
Version 3.9.0 -December 12,2023 #
Added
- Error BLUETOOTH_DISABLED. This error is thrown at the start of positioning if the Bluetooth is disabled in the phone and the only sensor used in positioning is the Bluetooth.
Fixed
- LocationStatus.BLE_SENSOR_DISABLED_BY_USER is also notified at the start of positioning if the Bluetooth is disabled.
Version 3.8.0 -November 27,2023 #
Added
- Added a new method LocationRequest.Builder#foregroundServiceNotificationOptions(…) to customize the Notification shown in the foreground mode.
- Added a new “stop” button to the Foreground Service Notification, to stop positioning from the Notification UI. The button is disabled by default and can be enabled using the new method foregroundServiceNotificationOptions(…).
Version 3.7.0 -November 20,2023 [Stable] #
Added
- New methods in MapViewConfiguration setRemoteIdentifier(String) and setViewerDomain(String)
- setRemoteIdentifier: Allows you to specify the ID of the map settings. This ID is provided by Situm upon request.
- setViewerDomain: Allows you to specify the URL of the MapViewer (default: https://map-viewer.situm.com).
Deprecated
- Methods setConfigurationIdentifier and setBaseUrl in MapViewConfiguration. You should use the methods added in this version instead.
Version 3.6.0 -November 15,2023 #
Added
- New method CommunicationManager.fetchIndoorPOIFromBuilding(…) to fetch a single POI. Also added a new Error HTTP_NOT_FOUND to the CommunicationManager domain.
- New method Poi.getCategories() that returns the list of categories the POI belongs to.
- Also added two method to obtain category identifiers from a POI, Poi.getCategoryIdentifier and Poi.getCategoryIdentifiers.
Changed
- The position adjustment is now decoupled from the orientation adjustment. If the distance from the calculated pose to the route is less than RouteAdjustment.distanceThreshold, the position will always be projected onto the route. The orientation will only be forced to align with the route direction if the position is projected onto the route and the difference between the bearing and the route direction is less than RouteAdjustment.angleDifferenceThreshold.
- Improved flexibility in PoiCategory.equals() method, allowing for a more relaxed comparison where matching the default category name is sufficient, irrespective of variations in alternative languages.
Fixed
- Leaked file stream at `StreamFile`.
Version 3.5.3 -November 06,2023 #
Changed
- Reduced time to obtain the first position.
Version 3.5.2 -October 31,2023 #
Changed
- Improves positioning performance when starting to follow a route. With this, the Map Viewer is able to adjust the location & orientation to the route smoothly. The routeAdjustement feature was broken from release 3.3.0. You can learn how to configure how the position is adjusted to the route from here.
Fix
- Corrected some polish translations.
Version 3.5.1 -October 26,2023 #
Changed
- From iOS Version 3.2.3 and Android version 3.5.1 routes behave the same on both platforms.
Version 3.5.0 -October 25,2023 #
WARNING: this version contains breaking changes.
Added
- Introduced a new method Configuration.setLanguageFromSystem(Context context) to automatically set the cartography translation language based on the current system language (when configured in the dashboard).
Changed
- Performance enhancements:
- Reduced the time to obtain the first position.
- Reduced the load times in all the CommunicationManager method calls.
- Behavior change: adjusted the behavior of Configuration.setLanguage to default to an empty value. This change ensures that the SDK does not utilize any specific language preference by default. Before this change, the device language was used by default.
- Cache max age adjustment: changed the default maximum cache age from 5 seconds to 1 hour for improved data management.
Deprecated
- Deprecated the getUpdatedAt and getCreatedAt methods for all model classes. Do not use these methods as they may not return the expected values.
Version 3.4.0 – October 19, 2023 #
Changed
- Updated Altbeacon library to version 2.19.5
- Improved the beacon scanning when useForegroundService is not enabled.
- The behaviour added in version 2.86.0 was removed. Now the positioning won’t restart when the app goes to background and returns to foreground. It is no longer necessary with the improvements to the beacon scanning
Version 3.3.1 – October 16, 2023 [Stable] #
Added
- New polish translation.
Version 3.3.0 – October 11, 2023 #
Changed
- We are pleased to announce that we have drastically improved route calculation algorithm for significantly enhanced performance. No action required from integrators as all enhancements have been seamlessly implemented internally.
Version 3.2.0 – September 21, 2023 #
Added
- Added new method callbacks to the NavigationListener interface. These new methods have a default empty implementation that aims to mitigate compatibility breaks. Default methods are available from Java 8 onwards so compatibility breakage could occur.
- onStart(Route): new method callback called when the navigation actually starts after a call to requestNavigationUpdates(…).
- onCancellation(): new callback called when the navigation is cancelled due to a call to removeUpdates().
- Added new methods to NavigationManager:
- addNavigationListener(NavigationListener), removeNavigationListener(NavigationListener), removeAllNavigationListeners(): add and remove listeners to the current navigation.
- requestNavigationUpdates(NavigationRequest): this overload of requestNavigationUpdates(NavigationRequest, NavigationListener) allows you to start navigation without passing a navigation listener.
- requestNavigationUpdates(NavigationRequest, DirectionsRequest, Handler): this is an overload of requestNavigationUpdates(NavigationRequest, NavigationListener) that calculates the route for you and automatically starts navigation when the route is obtained. Also you will not need to call NavigationManager#updateWithLocation(Location) as the SDK will do it internally.
Changed
- Until now, the Android SDK continued to respond with true to calls to NavigationManager#isRunning() after reaching the destination. However, reaching the destination now implies that navigation stops correctly, and isRunning() will return false as expected.
Version 3.1.2 – September 05, 2023 #
Deprecated
- MotionMode BY_FOOT_VISUAL_ODOMETRY and VEHICLE_VISUAL_ODOMETRY are now deprecated and if selected they will be changed to BY_FOOT
Removed
- ARCore library from the dependencies
Version 3.1.1 -August 11,2023 #
Changed
- Use the route information to improve the calculation of the user’s position.
- The parameters useRouteAdjustment, distanceThreshold and angleDifferenceThreshold used to improve the route guidance experience can be modified from the Remote Configuration.
Version 3.1.0 – August 04, 2023 #
Added
- Early support for Android 14. Previously, the SDK crashed in this version. Please bear in mind that Android 14 is not stable yet, therefore new issues might appear in the future.
- Method LocationRequest.avoidDoze and status LocationStatus.ALARM_PERMISSIONS_NEEDED_TO_AVOID_DOZE have been introduced. This allows you to prevent Doze mode from activating in your device. Previously, this was done internally by the SDK when needed, but this is no longer possible / advisable in Android 14. Using this configuration (avoiding Doze mode) is not recommended in most cases (except some tracking special cases), so you shouldn’t use it in general. If you want to know more about Doze Mode you can check these Android docs.
Removed
- Permission SCHEDULE_EXACT_ALARMS is no longer declared by the SDK.
Version 3.0.1 – July 18, 2023 #
Changed
- Improved positioning when the user is following a route and decides to ignore it in order to go in another direction.
Added
- Added experimental parameters useRouteAdjustment, distanceThreshold and angleDifferenceThreshold that allow the user’s position and orientation to be adjusted to the route being followed.
Version 3.0.0 – July 7, 2023 #
Introducing the new Situm SDK 3.0.
We are thrilled to announce the release of Situm SDK 3.0, which implies a significant architectural change in our SDK. With this update, we have integrated the previous UI standalone solution Wayfinding library directly into the SDK. This integration aims to streamline the development process and provide a more cohesive and comprehensive solution.
Furthermore we have introduced a remarkable evolution and improvement upon the Wayfinding library with the addition of the MapView component, powered by the new Situm Map Viewer. We’ve been listening to our customers’ feedback, and we have incorporated a wide range of enhancements based on your valuable input. Checkout the Situm page for further details.
As this library includes significant changes, compatibility with previous versions has been broken. We understand that transitioning to a new library may require some adjustments. To facilitate a smooth migration process, we have prepared comprehensive documentation:
We are incredibly grateful for your continued support and trust in our library. Situm SDK 3.0 represents our commitment to empowering developers with the most advanced tools and ensuring a brighter future for your software development endeavors.
Thank you for being part of this exciting journey with us!
Added
- The new Situm SDK 3.0 introduces a new visual component, MapView to provide interactive maps within your application. The MapView allows you to show indoor maps of your buildings on your app! It is a fully interactive Android View with improved capabilities:
- Intuitive Guidance with Dynamic and Static Navigation.
- Advanced POI Display Based on Zoom Level and Density.
- “What’s Nearby” Exploration Made Easy with Category & Subcategory Filtering, and POI search.
- POI information visualization.
- Tailored User Experience with High Configurability.
- Out of the box support for raster floorplans, raster tiles and GeoJSON/IMDF floorplans.
- Multilingual Interface.
- This new version lays the foundation for future improvements, specifically enabling full 3D maps and even augmented reality capabilities.
- Introduced MapViewController, a class that acts as a controller for MapView and manages user interactions and map data.