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.

Find the API documentation here!

[51.2.2] - 2024-01-11

This minor release fixes a bug related to the cutout and enables the UIFeedback Config feature to be used with presets.


  • Added new UIFeedback Config feature and TIN preset to be used together with the TIN/DOT plugin. For more information see UIFeedback config.


  • To ensure uninterrupted access to the Mobile SDK for Android dependency, please update the SDK URL in your build.gradle files. Specifically, you need to replace the existing Maven repository URL:

maven { url '' }

with the new URL:

maven { url '' }


  • Fixed a bug where the cutout was not drawn during the first use of the scanner.

[51.2.0] - 2023-11-27

This minor release allows you to scan UK driver’s licenses that have been issued post-Brexit. Additionally contained are breaking changes due to a restructuring of the package name (Android only), which you would only need to care about if you were using any of the renamed classes.


  • Added new United Kingdom driver’s license (layout 11002) to the Universal ID scanner. This allows you to scan UK driver’s licenses that have been issued post-Brexit.


  • [Breaking] On Android, we’ve made changes to the package structure by moving several classes from the old io.anyline package to the new io.anyline2 package. This includes:


      • AbstractZoomHandler

      • CameraConfig

      • CameraController

      • CameraOpenListener

      • CameraFeatures

      • CameraFeatures1

      • CameraPermissionHelper

      • CameraSize

      • CameraUtil

      • CameraView

      • FlashConfig

      • FlashControl

      • HighResolutionImageListener

      • HighResolutionImageProvider

      • ImageHolder

      • ImageListener

      • ImageReceiver

      • SimpleZoomHandler

      • SimpleZoomHandlerBuilder

      • ZoomEventHandler

    • io.anyline.modelsio.anyline2.model

      • AnylineImage

      • AnylineYuvImage

    • io.anyline.modulesio.anyline2.modules

      • LicenseExpirationHelper

    • io.anyline.utilio.anyline2.util

      • DimensUtil

      • ImageUtil

      • SoundUtil


  • The camera.CameraView.enableBarcodeDetection method has been removed. Please use camera.CameraView.addNativeBarcodeReceivedEventListener instead.

  • The camera.CameraView.disableBarcodeDetection method has been removed. Please use camera.CameraView.removeNativeBarcodeReceivedEventListener instead.


  • Fixed a bug that prevented auto flash (Flash.MODE: AUTO) from working with the Advanced Barcode scanner.

[51.1.0] - 2023-10-10


  • [Tire] Improved support for wide space TINs

  • [Commercial Tire ID] Improved accuracy

[51.0.0] - 2023-09-20


  • [Tire] Changed tireAgeInYearsRoundedDown type from string to int

  • Improved network connection handling in low bandwidth environments


  • [Meter] Fixed a bug that resulted in the MULTI_FIELD_DIGITAL_METER scan mode to return empty positions and values

[50.1.0] - 2023-09-07


  • Remap “DCT” (customerGivenNames) keyword to firstName and middleName fields in AAMVA PDF417 result

  • Improved support for damaged CODE-128 barcodes

[50.0.3] - 2023-08-30


  • Fixed bug preventing validationRegex to work for European License Plate Scanner.

[50.0.2] - 2023-08-08


  • Fixed crashes on Samsung A13 and potentially other phones in Universal Serial Number, Container, and other scanners.

[50.0.0] - 2023-07-31


  • [ID] Changed plugin config property scanOption in "universalIdField" to string type enum

  • [Vehicle Registration Certificate] Changed plugin config property scanOption in "vehicleRegistrationCertificateField" to string type enum

  • [Japanese Landing Permission] Changed plugin config property scanOption in "japaneseLandingPermissionConfigFieldOption" to string type enum

  • Improved HTTP/SSL connection handling


  • Removed old unused files

  • Removed camera 2 API

[49.0.0] - 2023-07-07


  • [Breaking] The targetSdk version has been increased to API level 33 (Android 13). Please make sure that your app’s targetSdk version is at least 33.

  • [Breaking] Face Detection feature for ID and MRZ is now optional. To turn on this feature, refer to the faceDetectionEnabled plugin config parameter of universalIdConfig or mrzConfig.


  • Wrong alignment of the Cutout when ScanView did not fill the whole device screen.


  • [ID] Added plugin config parameter to enable face detection

  • [MRZ] Added plugin config parameter to enable face detection

[48.0.0] - 2023-06-22


  • [Odometer] Added new Odometer scanner

  • [Meter] Added validation regex interface

[47.1.0] - 2023-06-16


  • Added overloaded method for initialising SDK with additional parameter for custom asset path

  • OCR custom assets can be added to a subdirectory inside of assets now


  • [Barcode] Crash if no barcodes found

  • [License Plate] fix for brightness controlled auto-flash mode


  • The feedback styles contour_line and contour_point of have been deprecated and fall back to contour_rect

[47.0.0] - 2023-06-01


  • Flash turns off when zooming in or out.

  • After reinitialising the ScanView with a ScanPlugin with a different id, the cutout of the old ScanPlugin would remain visible.

  • Wrong position of visual feedback in some screen resolutions.

  • Render skewed barcodes correctly.

  • [License Plate] Fixed a bug that prevented license plates from Ireland from scanning

  • [Barcode] Fixes a bug where barcode was not able to handle some unicode symbols

  • [License Plate] Fixed a bug where an exception would be thrown when a country was scanned which was not part of the country list of result schema


  • [Tire] Default upsideDown value is now AUTO (Tire Identification Number, Tire Size, Tire Make, Commercial Tire ID)

  • [Tire] Improved the scanning experience of the Tire Make scanner

  • [ID] default minimum confidence for fields is now set to 60

  • [ID] Improved lower-case field recognition

  • [ID] Improved scan robustness for AT and DE DVL layouts

  • [License Plate] Removed list of European countries from result schema

[46.1.0] - 2023-04-25


  • [Tire] Added new Tire Make scanner supporting 49 manufacturers

  • [Universal ID] Added new templates for Latin script:

    • BE_IDC_O_10002_F

    • PL_IDC_O_05001_F

    • BW_DVL_O_01001_F_v2

    • MZ_DVL_O_R500_F

  • [Meter] Added functionality to define a maximum number of decimal digits for the AUTO_ANALOG_DIGITAL_METER scan mode


  • Composite scanning receiving more than one result for the same ScanPlugin id.


  • [Universal ID] Modified templates for Latin script:

    • DE_IDC_O_02004_F

    • BW_DVL_O_01001_F

    • DE_DVL_O_02006-02003-02002-02001_F (errors reading names in German driving licenses)

  • [Tire] Improved accuracy and smaller SDK size for Universal TIN

  • [OCR] ocrConfig now uses models instead of model and can set an array of models instead of one model specifically


  • [Tire] Removed DOT_STRICT scan mode from Tire Identification Number (DOT) technical capability

[44.1.1] - 2023-04-07


  • When calling ScanView.init() to apply new view configs with a running ScanViewPlugin (simple or composite), the old ScanViewPlugin kept receiving and processing images what could lead to an unexpected result.

[44.1.0] - 2023-03-28


  • Wrong position of the CameraView and Cutout when ScanView did not fill the whole device screen.

  • When cancelOnResult was set to true for a plugin of type ID, the ScanViewPlugin.resultReceived could be called more than once due to FaceDetection process.


  • [Tire] Validation regex is now configurable from pluginConfig

[44.0.0] - 2023-03-23

Breaking Changes

io.anyline.plugin.result.Barcode - results encoded in base64 are now automatically decoded and returned in the value() method. The isBase64() check function has been removed and a new method getBase64value() was added to return base64 encoded results.


  • New composite processing mode: parallelFirstScan which works like parallel but stops after the first result.

  • [Barcode] Added base64value to barcode object in the barcode result

  • [Tire] Added productionDate, tireAgeInYearsRoundedDown, resultPrettified to TIN result

  • [Tire] Added option to disable production date validation for TIN

  • [ID] Added the following layouts for american ID cards

    • US-CO_DVL_0_R421_F

    • US-NV_DVL_O_R421_F

    • US-NV_IDC_O_R421_F

    • US-OK_DVL_O_R421_F


  • [ID] Fixed a bug where the MRZ scanner would not recognize 'H' on mexican ID’s


  • [Barcode] The coordinates in the barcode result are now relative to the full image instead of the scanned region

  • [Tire] Improved the accuracy for TIN/DOT recognition & detection

  • [ID] Improved the performance for ID scanning

  • [ID] Improved the accuracy of Turkish IDs


  • [Barcode] Removed isBase64 from barcode object in the barcode result

[43.1.0] - 2023-02-20


  • New event ScanView.onCutoutChanged that notifies the client when the cutout changed

  • Support for full frame scanning

  • ID results also return face image, if one is available


  • Watermark is displayed in the corner when using composite plugins

  • Watermark is now correctly shown below the cutout when not using composite plugins

  • Feedback style animated_rect also supports center alignment for the cutout

  • Corrected wrong position of cutout for animated_rect

  • When reducing SDK size, the assets are now copied correctly to internal storage

[43.0.0] - 2023-02-03

Breaking Changes

This release introduces fundamental changes & improvements to how the Anyline SDK works. To upgrade from a prior SDK version to version 51.2.2, check out the migration guide.

Document Scanner Support Dropped

As of Anyline v43, the Document Scanner plugin has been removed and the feature will no longer be supported.


  • Added PluginResult for describing result data

    • Added a type of plugin result for each scanning capability

  • [Tire] Added tire size specification fields to the result

  • [Barcode] Added AAMVA parsing for PDF417 codes on driving licenses

  • [ID] Restructured ID results in a way that every field can contain date- & multi-language information


  • Changed the SDK architecture from one using inheritance & generics to a composition-based approach

    • Instead of distinctive subclasses such as MeterScanViewPlugin, IDScanViewPlugin, etc. the SDK offers an ScanViewPlugin class regardless of the scanning use case

  • Changed the structure of how scanning use-cases are constructed through JSON

  • Introduced configuration types for every scanning use-case with a corresponding result type


  • Because of the fundamental nature of changes, there are no deprecations to list for this version.