Release Notes

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

The API documentation for the current version (13.0.0) is available here.

[13.0.0] - 2025-05-19

We have completed a major update to the Anyline Tire Tread ScanView Config classes in version 13.

If you are coming from a previous Anyline version, it is helpful to go over some of the more significant changes in the Migrating from SDK v12.x to v13+ page.

Breaking Changes

Android & iOS

  • The TireTreadScanViewConfig, was now replaced by the TireTreadConfig. This new configuration object includes:

    • UIConfig: Configuration for the user interface.

    • ScanConfig: Configuration for the scanning process.

    • AdditionalContext: Any additional context required for a measurement.

You can find further implementation details in the Scan Process - Overview page and in the API docs.

iOS

  • The ScanViewControllerHolder interface was removed.

    • Starting with this version, the TireTreadScanView creation will directly return an instance of the TireScannerViewController.

    • Remove the ScanViewControllerHolder interface implementation, and directly set the return of the TireTreadScanView creation to the scannerViewController, previously defined by the interface.

    • The dismissViewController can be completely removed, as the dismiss behaviour should be provided by the onScanAborted, onScanProcessCompleted, and onError callback implementations.

  • The context parameter of the TireTreadScanView was removed.

    • It is not necessary to provide your controller’s self anymore.

For more details, check the iOS scan process page.

Added

[12.1.0] - 2025-04-23

Changed

  • The default scan speed is now ScanSpeed.Fast.

    • The scan process will now, by default, take 7 seconds to be completed (instead of 10 seconds).

    • This configuration can still be changed by setting the TireTreadConfig.uiConfig.scanSpeed property to ScanSpeed.Slow.

Added

  • The TireTreadScanView can now also be initialized without any config object/string.

    • In this scenario, the default config values will be used.

    • For more details, refer to the Scan Process - Overview page.

iOS

  • Added support for iOS Simulator builds when using the SPM package

    • While the camera and scanning capabilites cannot be used in the simulator, the package from SPM now can also run on x64 and arm64 simulators, allowing running automated tests, or testing other features in your application.

[12.0.1] - 2025-04-07

Changed

  • Fixed a bug that lead to an exception when deserializing TreadResultRegion from JSON

[12.0.0] - 2025-04-02

Breaking Changes

  • Renamed the parameter jsonConfig of the TireTreadScanView composable to `config

  • Replaced the "minimum value" properties in the TreadDepthResult with a single minimumValue property of type TreadResultRegion.

Android

  • Minimum required Gradle version and AGP version is 8.2.1

  • Removed the custom XML attributes from the TireTreadScanView

Added

  • Permissions required by the SDK are now handled internally

  • Added a new MissingPermission screen to the DefaultUI, which can be configured via the MissingPermissionConfig

    • If DefaultUI is not used, a black screen will be shown, when the user denies camera permission.

  • Added edge-to-edge support in the DefaultUI for Android API 35 and above

Changed

  • For the following API calls we changed the generic IllegalStateException to ScanProcessNotCompletedException in case the scan process wasn’t completed at the time of the API request:

    • AnylineTireTreadSdk.getHeatmap

    • AnylineTireTreadSdk.getTreadDepthReportResult

    • AnylineTireTreadSdk.getTreadDepthReportPdf

    • AnylineTireTreadSdk.getTreadDepthReportUrlString

[11.2.0] - 2025-02-28

Added

  • Added the minimum value of the measured tread depths to the TreadDepthResult. You can access it via .minimumValueMm for millimetres or .minimumValueInch and minimumValueInch32nds for inches.

  • Added a hint to inform the user to enable auto-rotation to the OrientationWarning screen. You can configure the text via the OrientationWarningConfig.rotationLockHint property.

[11.1.0] - 2025-02-13

Added

  • Added the possibility to convert TreadResultRegion to and from JSON strings

Fixed

iOS

  • Fixed an issue that would lead to screen stuttering issues under bad network conditions

  • Fixed an issue where haptic feedback would be triggered on the upload screen

[11.0.2] - 2025-02-07

Fixed

Android

  • Fixed an issue where tire width was not passed correctly when initializing the TireTreadScanView in code

  • Fixed an issue where the user was not able to start the scan, if the camera couldn’t provide a focus in time

[11.0.1] - 2025-02-05

Fixed

Android

  • This version addresses a potential crash that could happen on specific scenarios due to Instrumentation Assets not being available.

[11.0.0] - 2025-01-22

Breaking Changes

  • We Split TireTreadScanViewCallback into separate function callbacks to further accentuate the correct flow of information

    • onScanAborted function callback has to be provided now to handle the case when the scan gets aborted

    • onError function callback has to be provided now to handle an error that occurred during scanning

    • onScanProcessCompleted function callback has to be provided now to continue the user flow after the scanning process has finished

    • For more information, check the documentation for Android and iOS

  • Removed onUploadAborted event as it was consolidated into onScanAborted to simplify the communication with the app

  • Removed onUploadFailed event as it was consolidated into onError to simplify the communication with the app

  • Removed onUploadFinished event as it was consolidated into onProcessCompleted to simplify the communication with the app

Added

  • Added new classes representing the various scan events that can happen during a scan

  • The new OnTireWidthProvided event (Android only) notifies when the user provided a tire width or just skipped the step

  • TireWidthInputConfig has new configurable values to customize the user experience

    • Added a new configurable value prefilledInputWidth to prefill the tire width in the text field in the TireWidthInput screen

    • Added a new configurable value tireWidthRange to limit the possible values the user can enter in the TireWidthInput screen

    • Added a new configurable value tireWidthOptions representing the shortcut button values the user can choose from when selecting a tire width in the TireWidthInput screen

[10.0.1] - 2024-12-19

Changed

Android

  • Improve measurement reliability for low-performing Android devices.

[10.0.0] - 2024-12-16

Breaking Changes

Android

  • Renamed the function to initialize the TireTreadScanView from withScanConfig() to init()

Added

Android

  • Added a new screen TireWidthInput to the DefaultUi with its corresponding config TireWidthInputConfig

    • This view allows users to enter the tire width to enable more accurate results

This screen is only available on Android and cannot be configured for iOS.

Changed

  • Deprecated AnylineTireTreadSdk.getTreadDepthReportUrlString() and AnylineTireTreadSdk.getTreadDepthReportPdf()

    • PDF reports are now deprecated and will be removed in the next versions.

  • Enhanced management of lifecycle events during rotation

Android

  • Changed the signature of the TireTreadScanView initialization function to include the TireTreadScanViewCallback to be able to observe events during scan process

  • Changed the signature of the TireTreadScanView initialization function to include a lambda function to observe a failed initialization

Removed

Android

  • Removed the possibility to directly set up the TireTreadScanView via XML attributes to streamline the integrator experience

  • Removed TireTreadScanView.tireTreadScanViewCallback attribute, it can now be set via the TireTreadScanView.init() function

  • Removed TireTreadScanView.onInitializationFailed attribute, it can now be set via the TireTreadScanView.init() function

[9.0.0] - 2024-11-14

Changed

  • Introduced a new and improved DefaultUI, that is more streamlined to provide the user a simpler scanning experience with less friction. Changes include:

    • New icon and default text for the OrientationWarning for a sleeker experience

    • New icon and default text for the TapToStartScanningTooltip to be a more prominent guiding experience

    • TapStoStartScanningTooltip now also makes the user aware when they have to move the device before starting the scan

    • Added a new animation to the FocusPointTooltip to better visualize how to get to a focussed camera quicker

    • Introduced a more prominent Countdown that shows how many seconds are left until the scan is done

    • Introduced a visual guide in ScanDirection to show the user in which direction he should move the device for an optimal scan result

  • Introduced a custom tag during SDK initialization to identify different devices of the same model

    • This feature is experimental and only meant for internal use

  • Using the DefaultUI does not block the user from starting the scan, if the distance to the tire is not optimal (around 20cm or 8in)

Breaking Changes

  • Removed LineProgressBar and LineProgressBarConfig to be in line with the new DefaultUI

  • Removed HowToScanTooltip and HowToScanTooltipConfig to be in line with the new DefaultUI

  • Removed ProgressTimer and ProgressTimerConfig to be in line with the new DefaultUI

[8.0.1] - 2024-11-05

Fixed

  • If the internet connection becomes unavailable before the scan is started, the TireTreadScanView will now handle it by invoking the onScanAbort callback.

[8.0.0] - 2024-10-10

Fixed

  • Fixed a crash that happens when requesting the result report with an invalid UUID

Breaking changes

Android

  • The companion object (AnylineTireTreadSdk.companion) for calling the functions was removed to provide a better integrator experience (an example of its usage can be found here)

iOS

  • Removed the unnecessary context parameter from the SDK initialisation. The SDK can now be initialised with just the license key (an example implementation can be found here).

  • The object for calling the functions changed from AnylineTireTreadSdk.companion to AnylineTireTreadSdk.shared (an example of its usage can be found here)

[7.0.0] - 2024-09-23

Added

  • Added correlationId to additionalContext to allow the integrator to tie their other Anyline scan processes to the tread depth measurements from the TireTreadSDK

  • Updated internal JSON parsing to allow for optional values in responses

Breaking changes

  • Removed function to send tire width after the scan (AnylineTireTreadSDk.sendTireWidthResultFeedback), as there is now the possibility to send it with the scan

  • Removed unneeded confidence from TireTreadResultRegion.initGlobalMm and TireTreadResultRegion.initGlobalInch

[6.1.1] - 2024-09-12

Fixed

Android

  • Fixed an issue that could lead to less images being processed during the measurement

[6.1.0] - 2024-09-06

Added

Android

  • Added an option to pass the width of the tire when initializing the scan process to further improve the accuracy of the measurements

    • an example of how this is implemented can be found here.

    • For now this feature is meant for passenger car tires only

Fixed

  • Fixed an issue where an unavailable region in the TreadResultRegion would be presented as available with 0.0 as a fallback value.

[6.0.0] - 2024-08-20

Added

  • Added the SDK’s API documentation detailing the functions and interfaces the integrator can use

  • Added an Orientation Warning to the Default UI making the user aware to hold the device in landscape mode for an optimal scan experience

Breaking Changes

  • Reworked the way results from network requests are handled: instead of two callbacks (one for failure and one for success) only one is needed to be passed as a parameter (an example of how this works for fetching the result can be found here)

[5.2.0] - 2024-06-17

Added

  • Get Heatmap functionality is now available.

    • Using the AnylineTireTreadSdk.getHeatmap function, it is now possible to retrieve a full Heatmap of the tire’s tread depths. Check the page Analytics for more details.

  • When initializing the scan process with a JSON config, you can now listen for possible error messages with a callback method. This is not supported when initializing via view.xml.

Changed

  • Scanning is limited to landscape mode of the device to improve the scanning experience.

Fixed

Android

  • Fixed a potential crash that could happen when keeping the ScanView open for several minutes.

[5.1.0] - 2024-05-28

Added

  • Scan process can now also be set up using a full JSON string as the configuration input

    • For instructions, check the platform specific scan process pages for Android and iOS

[5.0.0] - 2024-05-24

Please be aware of the breaking changes listed below.

Added

  • Scan process can now be set up via a JSON configuration

    • For instructions, check the platform specific scan process pages for Android and iOS

  • Scan result can now easily be converted to a JSON for further processing on integrator side

    • Simple use the toJson() extension function in the TreadDepthResult object

Changed

  • Configuring the TireTreadScanViewConfig is more intuitive now.

Removed

  • Replaced some functions of TireTreadScanViewConfig with a single function withScanConfig() to make the setup process more streamlined.

Breaking changes

  • Removed the Builder from the TireTreadScanViewConfig. The configuration can be now done directly using the fields of a TireTreadScanViewConfig object.

    • Builder.withScanSpeed is now tireTreadScanViewConfig.scanSpeed

    • Builder.withAdditionalContext is now tireTreadScanViewConfig.additionalContext

    • Builder.withMeasurementSystem is now tireTreadScanViewConfig.measurementSystem

    • Builder.withCustomDefaultUiConfig is now tireTreadScanViewConfig.defaultUiConfig

    • Builder.disableDefaultHaptic is now tireTreadScanViewConfig.useDefaultHaptic

    • Builder.disableDefaultUi is now tireTreadScanViewConfig.useDefaultUi

[4.2.1] - 2024-04-23

Changed

  • Improved communications with our backend to offer a more stable and reliable scan experience

[4.2.0] - 2024-04-05

This release introduces several enhancements to the Default UI, resulting in a more accurate and intuitive scanning process. Additionally, the Default UI now supports localization and customization.

Check the Default UI specific documentation for more details.

Added

  • A new DefaultUiConfig class now allows fine-grained customization of the Default UI’s components.

    • In the component configuration classes, visible properties enable you to selectively hide specific elements while keeping others visible.

    • text properties can be used to define custom texts for the components.

    • Check the Default UI’s Customizing and Elements page for customization options, a detailed list of components, and their respective configuration classes.

Changed

  • Default UI

    • Introduced timer and moving phone icon to guide the pace and direction of the scan

    • Improved upload screen

    • Moving tire overlay adapts automatically to the orientation of the device

Make sure to always scan from outside to inside, when scanning a tire mounted on a car

[4.1.0] - 2024-03-08

This release introduces several improvements to the Default UI’s user experience and scan guidance. Additionally, it includes a new feature that allows for providing and retrieving more context for measurements. A small bug fix has also been implemented for Android.

Added

Android & iOS

  • [Default UI] Introduced a tire-shaped grid overlay to the Default UI, making it simpler to align the camera correctly with the tire’s shoulder.

    • The speed and direction to where the phone should be moved during the scan process are now guided by the tire-shaped overlay’s movement.

    • The scanning process should always be performed from the outer side to the inner side of the tire.

    • When the phone is rotated, both the overlay and the scan direction are automatically adapted.

  • [Default UI] Added a tooltip informing the user how to position the tire overlay to be in line with the shoulder of the tire.

  • [Additional Context] A new class AdditionalContext was added to enable holding more context about a specific measurement.

    • This information can be provided when initializing the TireTreadScanView.

    • If provided, its information will be returned in the measurement’s result.

    • Check the platform-specific 'scan process' documentation pages for more information.

  • [Scan View] The TireTreadScanViewConfig builder has a new .addAdditionalContext(AdditionalContext) function, enabling you to provide more context to a measurement.

  • [Result] Added a new property called measurementInfo (of type MeasurementInfo) to the TreadDepthResult class.

    • This class can be used to retrieve more information about the measurement such as UUID, status and additionalContext (if previously provided).

iOS

  • [Default UI] Added a small in-between screen to guide the user on how to focus the camera.

  • [Default Haptic] Added haptic feedback to signalise that the tire is now in focus.

Removed

  • [Default UI] As part of the user guidance improvements, the tooltip messages on the top of the UI were removed.

Fixed

[Android]

  • Fixed an issue where the distance feedback would continue to be played after leaving the Scan View.

    • In some specific scenarios, the TireTreadScanView's distance feedback would continue to be played even after ending the scan process.

    • With this release, users will not experience this issue anymore, regardless of how the TireTreadScanView is implemented.

[4.0.1] - 2024-02-26

Fixed

[iOS]

  • [Default UI] Fixed a crash that happened when some resource files were not available.

    • When using the Default UI without the image resources available in the Application’s bundle, the SDK would crash.

    • The SDK now includes those resources, preventing any such crashes.

[4.0.0] - 2024-01-25

Please be aware of the breaking changes listed below.

Changed

  • Default UI redesign

    • We reorganized the UI to offer a better user experience with the help of tool tips.

    • The Default UI now intercepts user touches to start and stop the scan process instead of using buttons.

    • We also updated the distance indicator to tell the user whether they have to move closer or farther away from the tire.

  • The DistanceStatus enum has a new status (UNKNOWN on Android - unknown on iOS), returned when no distance information is available.

    • This is the case when the device’s camera was not yet able to focus on the scan target.

Added

  • Added a new captureDistanceStatus property to the TireTreadScanner instance, of type DistanceStatus.

    • This property can be used to check if the user has the device correctly positioned for the scan process.

  • Added a tooltip icon that signalises that the camera is in optimal position to start the scanning process

Breaking Changes

  • To offer a more streamlined experience, we removed some of the classes:

    • Color

    • ATDSideButton on iOS

    • DistanceFeedbackView

    • ScanGuideView

    • ScanSideButtonsView

[3.0.1] - 2024-01-17

Fixed

[Android]

  • Fixed a crash that happened when aborting a scan that wasn’t started yet.

    • Aborting a scan process before starting it would result in crash due to an unitialized property.

    • The SDK will not crash anymore when aborting scans before their initialization.

[iOS]

  • Fixed a crash that happened when the ProximaNova-Bold font was not available.

    • When using the Default UI without the ProximaNova-Bold font available in the Application, the SDK would crash.

    • The SDK’s Default UI will not crash anymore when this font is not available.

[3.0.0] - 2023-12-28

This major release includes many improvements in the usability and stability of the Tire Tread SDK (both for integration and usage).

Please be aware of the breaking changes below:

Breaking changes

[Android & iOS]

  • ScanTireTreadScanViewConfig

    • defaultUi and defaultHaptic are now enabled by default.

    • The TireTreadScanViewConfig constructor was changed to a Builder pattern, as shown below:

      • TireTreadScanViewConfig.Builder().build() - For more details and examples, check the platform-specific "Scan Process" pages.

  • ResultsgetTreadDepthReportResult:

    • You no longer need to call getTreadDepthReportResult repeatedly until the measurement result becomes available. Just call the function on a background thread, and listen for callbacks on success and on failure.

    • getTreadDepthReportResult function is now void.

    • getTreadDepthReportResult's success callback has been renamed from Succeed to Succeeded.

    • onGetTreadDepthReportResultSucceeded callback now provides the result as a TreadDepthResult object.

    • onGetTreadDepthReportResultFailed callback now provides the failure information as a MeasurementError object.

  • ResultsTreadResultRegion object:

    • The field confidence was removed.

  • Results / PDF ReportgetTreadDepthReportPdf function:

    • This function is now void.

    • The success callback has been renamed from Succeed to Succeeded.

    • The onGetTreadDepthReportSucceeded callback provides the ByteArray of the PDF Report.

    • The onGetTreadDepthReportFailed callback provides now only an Exception.

[iOS]

  • Increase minimum iOS version requirement to 16.4.

[Android]

  • The minimum version requirements have been increased to:

    • JDK 17

    • Gradle 8.1.0

    • compileSdk 34

    • minSdk 26

    • Compose Compiler v1.5.0

  • ScanTireTreadScanView

    • The attributes useDefaultUi and useDefaultHaptic of the TireTreadScanView have been renamed to disableDefaultUi and disableDefaultHaptic respectively, with default values set to false.

      • Default UI and Haptic will be enabled by default, unless explicitly disabled.

Added

[Android & iOS]

  • Audio feedback can now be played by the SDK together with the vibration feedback. For more details and examples, check the platform-specific "Scan Process" pages.

[Android]

  • start, stop, and abort buttons, to SDK’s default UI.

  • capture distance info to SDK’s default UI.

  • capture progress bar, distance feedback, and upload screen to the default UI.

Improved

[Android]

  • Scan is now automatically aborted when the activity containing the TireTreadScanView enters the onPause state.

[iOS]

  • Greatly improve the stability and responsiveness of the SDK.

Fixed

[iOS]

  • Torch sometimes was not activated when starting a scan.

  • Crash when Haptic Engine was not available.

[2.3.0] - 2023-10-25

  • In the TreadDepthResult, a new field valueInch32nds is now available, containing the result in 32 seconds of an inch.

[2.2.0] - 2023-10-09

  • [Android] Added audio feedback in form of a beep when the tire is too far or too close to the camera

  • [Android] Added haptic feedback when the tire is too far or too close to the camera

[2.1.4] - 2023-10-05

Fixed

  • [iOS] useDefaultUi when false is showing black screen

  • [iOS] scan can start even when focus dot has not yet been added

  • [iOS] start/stop button state not updating correctly

[2.1.3] - 2023-08-24

Changed

  • More scan process and image quality improvements

[2.1.2] - 2023-08-24

Changed

  • [Android] Improve scan process and image quality

[2.1.0] - 2023-08-04

Added

  • [Android] Distance info in the default UI

  • [Android] Provide vibration feedback

[2.1.0] - 2023-07-20

This is the first release for iOS

[2.0.0] - 2023-06-27

  • Major rewrite of the SDK (available only for Android)