Changelog for the Android Barcode Scanner SDK
tip
For additional details about the API, please refer to our API reference documentation.
Version 7.1.1 (27 Aug 2025)
- 🎉 New:
- General:
- Added setters for
UseCaseResolutionSize
limits for Preview and Analyzer use-cases inScanbotCameraXView
. SeeScanbotCameraXView#setPreviewFrameResolutionLimit(limit: UseCaseResolutionSize)
andScanbotCameraXView#setAnalyzerFrameResolutionLimit(limit: UseCaseResolutionSize)
.
- Added setters for
- General:
- 🚀 Improvements:
- Barcode Scanner:
- Improved handling of back action with multiple dialogs and bottom sheets.
- General:
- Changed permission on mock camera to
android.permission.READ_EXTERNAL_STORAGE
. - Optimized the selection of the resolution for the Preview use-case in
ScanbotCameraXView
. Square resolution support is now an opt-in option. SeeIScanbotCameraView#setSquareFrameSizeEnabled(enabled: Boolean)
.
- Changed permission on mock camera to
- Barcode Scanner:
- 🐞 Bug fixes:
- Barcode Scanner:
- Fixed an issue where the
extractedDocument
was not being generated for GS1 HandlingDecodeStructure
andDecodeFull
. - Barcode Scanner RTU UI v2: fixed an issue where the back button navigation did not work.
- Fixed an issue where the
- General:
- Fixed an issue with the black preview in
ScanbotCameraXView
when the camera selected a square resolution on some Samsung and Xiaomi devices. - Prevent throwing exception when
/sys/devices/system/cpu/cpufreq
doesn't exist.
- Fixed an issue with the black preview in
- Barcode Scanner:
- 🚙 Under the hood:
- Added 3rd party PdfiumAndroid library.
Version 7.1.0 (24 Jul 2025)
- 🎉 New:
- Barcode Scanner:
- Added
extendedQuad
andextendedQuadNormalized
fields to theBarcodeItem
class to represent extended quads for 1D barcodes. BarcodeItem
has a new fieldrawBytesEncodings
that contains the precise character encoding information ofrawBytes
.BarcodeItem
has a new fieldstructuredAppendInfo
for messages split across multiple barcodes.- All Barcode AR overlays are now based on
extendedQuads
. BarcodeScannerConfiguration
has a new fieldaccumulationConfig
which allows the accumulation of barcodes over multiple frames in live mode.BarcodeItem
has a new fieldglobalIndex
to identify a barcode across multiple frames. Can be used for live scanning.- RTU-UI v2: Added
selectedZoomFactor: Double
metadata field inBarcodeScannerUiResult
with the value that the user used to scan the barcode.
- Added
- General:
ImageRef
in Java wrapper can now be efficiently created from ajava.io.InputStream
.- Added
setImageCaptureEnabled(enabled: Boolean)
method toScanbotCameraXView
to enable or disable image capture functionality. - Added more debug level logging to
ScanbotCameraXView
events. - Added the possibility to inject an image to simulate a video stream and a captured image to any scanner's camera session for UI testing. See
ScanbotCameraViewConfigurationProvider
. - Added property
fpsLimit
toCameraConfiguration
andsetAnalyzerFpsLimit
toScanbotCameraXView
to limit the rate of detections per second in normal performance mode.
- Barcode Scanner:
- 🚀 Improvements:
- Barcode Scanner:
- Boarding pass document parser now supports up to version 8 of the IATA-BCBP standard.
- vCard document parser was improved.
- General:
- Improved
ScanbotCameraXView
preview size selection strategy for the square screens. - Improved the algorithm of high performance cores computation as the old one didn't work correctly on some devices (e.g. Pixel 9 Pro).
- Integrated Android Performance Hint Session. This significantly improves multithreading performance for Barcode Scanner on devices that support the Hint Session (e.g. Pixel 9 Pro and Samsung S24 Ultra). Use
ScanbotBarcodeScannerSDKInitializer.setPerformanceHintApiEnabled(false)
to turn it off.
- Improved
- Barcode Scanner:
- 🐞 Bug Fixes:
- Barcode Scanner:
- The carrier identifier for MaxiCode mode 3 might be encoded by using different codewords. Now, all possible codewords are checked.
- vCard document parser now correctly processes the "FN" key as FormattedName.
- General:
- RTU-UI v2: Fixed handling of the back actions for modal dialogs.
- Fixed a bug when
CameraTakePictureCallback.onTakePictureRequested()
wasn't called properly at the corresponding event.
- Barcode Scanner:
- ⚠️ Breaking changes:
- Barcode Scanner:
BarcodePolygonsView.BarcodeItemViewBinder.bindView()
: Added an additional property withtextViewStyle
.
- General:
- Removed
ScanbotBarcodeScannerSDKInitializer.useCameraXRtuUi()
.
- Removed
- Barcode Scanner:
- 🚙 Under the hood:
- Added flatbuffers 2.0.6.
Version 7.0.2 (23 May 2025)
- 🚀 Improvements:
- GS1 Composite codes are now processed faster in Scan from Image mode.
- Barcode RTU-UI v2: Added the ability to force close an opened scanner screen by local intent.
- 🐞 Bug fixes:
- Fixed a crash that occurred when parsing an HIBC document in the Barcode Scanner.
- Fixed the camera preview size selection algorithm for
ScanbotCameraXView
with a square aspect ratio. - Barcode RTU-UI v2: Fixed a crash with barcode launcher initialization when the SDK was not yet initialized.
- 🚙 Under the hood:
- Updated Boost C++ version to 1.88.0
- Updated spdlog version to 1.15.2
- Updated xsimd version to 13.2.0
- Updated xtensor version to 0.26.0-scanbot
- Updated xtl version to 0.8.0
Version 7.0.1 (23 April 2025)
- 🚀 Improvements:
- Improved the recognition of PDF417 barcodes in the barcode scanner.
- Improved the barcode scanner to better recognize the QR codes if the top left finder pattern is corrupted (up to QR code version size 20).
- 🐞 Bug fixes:
- Fixed the resolution strategy for the square preview for
ScanbotCameraXView
. - Fixed an issue when scanning Code93 barcodes with
stripCheckDigits = false
(default) and the check digit is an extension character.
- Fixed the resolution strategy for the square preview for
Version 7.0.0 (27 Mar 2025)
- 🎉 New:
- Advanced configuration of Barcode Scanner. See more here:
BarcodeScannerConfiguration
. - Simplified configuration of Barcode Scanner. See more here:
BarcodeScannerConfiguration.create(barcodeFormats: List<BarcodeFormat>, extractedDocumentFormats: List<BarcodeDocumentFormat>, onlyAcceptDocuments: Boolean)
. - Lists of predefined subsets (1D, 2D, Postal, Pharma, etc.) of barcode formats. Old predefined sets of barcode formats were removed. See more here:
BarcodeFormats
. - Added an ability to filter out all unaccepted barcode document formats in
BarcodeDocumentParser
. See more here:BarcodeDocumentParser.parseDocument(input: String, acceptedFormats: List<BarcodeDocumentFormat> = BarcodeDocumentFormats.all
). - Images are now represented as references by using the
ImageRef
feature. - Added a new
BarcodeScannerEngineMode
calledNEXT_GEN_FAR_DISTANCE
which is optimized for scanning from far distances. - Introduced a new engine mode
NEXT_GEN_LOW_POWER_FAR_DISTANCE
that is optimized for scanning barcodes from far distances on low-power devices. - Added support for new barcode formats that are used in the pharmaceutical industry:
PHARMA_CODE
,PHARMA_CODE_TWO_TRACK
,PZN_8
(Pharmazentralnummer),PZN_7
. - Added support for a new barcode document format
BarcodeDocumentFormat.HIBC
. BarcodeItem
has a newsizeScore
field with a value between 0 and 1 that represents the relative size of the barcode compared to the size of the input image. All barcode configurations have a new floatminimumSizeScore
that is set to 0 by default. All barcodes withsizeScore < minimumSizeScore
are ignored. Note thatminimumSizeScore
can be chosen differently for each barcode format.- Added a flag
addAdditionalQuietZone
toBarcodeFormatConfigurationBase
. If this flag is enabled, we process the barcode scanning with an artificial quiet zone that we add to the input image. This flag should be used to scan sharp crops of a barcode. By default the flagaddAdditionalQuietZone
is disabled. - Added a flag
keepScreenOn
toBarcodeScannerScreenConfiguration
for RTU-UI v2 Barcode Scanner screen. Iftrue
, as long as this window is visible, the device's screen will stay awake. - Introduced a boolean
strictMode
for certain barcode configurators. If this mode is disabled, it should allow for a higher detection rate in difficult scenarios, but with the possibility that false positive results may occur. Currently, we supportstrictMode
forQR_CODE
,MICRO_QR_CODE
,RMQR_CODE
,PDF_417
,MICRO_PDF417
, andGS1_COMPOSITE
. - RTU-UI v2: added support of
minimumSizeScore
property for Barcode Scanner configuration.
- Advanced configuration of Barcode Scanner. See more here:
- 🚀 Improvements:
- Added the option to ignore barcodes that do not decode to one of the accepted document formats for
BarcodeScannerConfiguration
in RTU-UI v2 screen. See more here:BarcodeScannerConfiguration.onlyAcceptDocuments
. - Significant speed improvements in live mode on very large input resolutions.
- Improved the false positive rate for
ITF
barcode format. - Improved quiet zone checks for the barcode formats
ITF
,CODE_11
,MSI_PLESSEY
,IATA_2_OF_5
,INDUSTRIAL_2_OF_5
andCODE_25
. - We additionally allow for checking
maximumTextLength
for the barcode formatsCode11
,Code39
,Code93
,Code128
andCodabar
. - By default, Code 93 now includes check digits in the result. To disable this and restore the previous behavior, set
stripCheckDigits = true
.
- Added the option to ignore barcodes that do not decode to one of the accepted document formats for
- 🐞 Bug fixes:
- Fixed screen insets for Android API 35 with forced edge-to-edge mode by opting it out for RTU-UI v1 screens.
- RTU-UI v2: Fixed the modal dialog to no longer appear below the status bar.
- Fixed an overflow when decoding a
MICRO_QR_CODE
barcode format with wrong bits in numeric mode. - Fixed
minimumTextLength
forITF
barcode format. Before, we used it to check the number of symbols instead of the true text length. - Fixed returned results for all types of
UpcEanExtensionBehavior
. - Fixed checksum for
Code39
barcode format. - For
Code11
barcode format with exactly 10 data digits, enabled checksum and enabled flagstripCheckDigits
, we now strip both check digits. - Fixed sorting of quad points for four-state/postal barcode types.
- Fixed quad when flag
BarcodeFormatConfigurationBase.addAdditionalQuietZone
is enabled. - RTU-UI v2: fixed issue with
FindAndPickScanningMode().sheetContent.barcodeItemImageVisible
was not properly applied. - RTU-UI v2: fixed accessibility content for action buttons.
- ⚠️ Breaking Changes:
- RTU-UI v1: All screens now expect
RGBA
values for HEX string when parsing configuration from JSON. - RTU-UI v1: Refactored the screen result structure for both single and batch scanning operations. See more here:
BarcodeScannerResult
. - RTU-UI v1: Removed the ability to set Barcode Image Generation type in the screen configuration.
- RTU-UI v2: Changed the result API of the screen. See more here:
BarcodeScannerUiResult
. - Removed old configuration API of Barcode Scanner. Please use the new configuration mechanisms instead.
- All Barcode Formats are represented by
io.scanbot.sdk.barcode.BarcodeFormat
enum. All other barcode format enums were removed. - Replaced class
io.scanbot.barcodescanner.model.BarcodeType
withio.scanbot.sdk.barcode.BarcodeFormat
. - Renamed enum
MSIPlesseyChecksumAlgorithm
toMsiPlesseyChecksumAlgorithm
. - Barcode Document Format are represented by
io.scanbot.sdk.barcode.BarcodeDocumentFormat
enum. - Removed class
io.scanbot.sdk.ui_v2.common.mappers.AspectRatio
, please useio.scanbot.sdk.common.AspectRatio
. - RTU-UI v2: refactored
BarcodesExtensionFilter
enum and synchronized withUpcEanExtensionBehavior
enum from Barcode Scanner Classic component API. - Replaced
acceptedDocumentFormats
list parameter inBarcodeScannerConfiguration
withextractedDocumentFormats
list of document formats andonlyAcceptDocuments
flag.
- RTU-UI v1: All screens now expect
- 🚙 Under the hood:
- Updated Compile Sdk to 35
- Android Jetpack Compose updated to 1.7.8
- Upgraded nlohmann::json to 3.11.3
- Upgraded xsimd to 13.0
- Upgraded xtl to 0.7.7
- Upgraded xtensor to 0.25
- Upgraded yaml-cpp to 0.8
- Upgrade OpenCV to 4.10
Version 6.2.1 (07 Feb 2025)
- 🐞 Bug fixes:
- Fixed potential issue with
BarcodePolygonView
duringonDestroy
when the AR overlay is displayed.
- Fixed potential issue with
Version 6.2.0 (30 Jan 2025)
- 🎉 New:
- Add the ability to limit the detection fps in
ScanbotCameraX
. - Implemented AES GCM encryption. Use
AesGcmEncryptedFileIoProcessor
when setting encryption during SDK initialization.
- Add the ability to limit the detection fps in
- 🚀 Improvements:
- Improved
ScanbotCameraX
resolution selection strategies for scanning and preview cases.
- Improved
- 🚙 Under the hood:
- Updated androidx camerax 1.4.1 with 16kb page support.
Version 6.1.1 (4 Dec 2024)
- 🐞 Bug fixes:
- Fixed the height of the bottom sheet component for the Barcode Scanner RTU UI v2 screen.
Version 6.1.0 (8 Nov 2024)
- 🎉 New:
- Added support for 16KB page size (Android 15).
- Added option
MultipleScanningMode.allowEmptySubmission
to allow submission of an empty barcode list in the Multiple Barcodes use case in RTU-UI v2.
- 🐞 Bug fixes:
- Fixed KANJI mode for QR codes.
- Fixed a bug with incorrect raw bytes returned for some 2D barcode types.
- Fixed an issue with AR Overlay and barcode mapping in
BarcodeScannerActivity
RTU UI v2.0, where the mapped image wasn't shown on the AR Overlay until the same barcode appeared in the list below.
Version 6.0.0 (24 Oct 2024):
- 🎉 New:
- Added new property
addAdditionalQuietZone
toBarcodeScannerAdditionalConfig
. - Added a new predefined collection of barcodes,
BarcodeFormat.POSTAL
, which includes barcodes used in the postal industry.
- Added new property
- 🚀 Improvements:
- AR overlay is enabled by default for
FindAndPickScanningMode
in Barcode Scanner RTU UI v2 screen. - For
CODE_128
andITF
, we improved the recognition of barcodes generated by defective thermal printers that do not print certain black bars correctly.
- AR overlay is enabled by default for
- 🐞 Bug fixes:
- Minor fixes for BarcodeScanner appearance in RTU UI v2 to make it consistent with iOS counterpart.
Version 5.2.0 (28 Jun 2024)
- 🎉 New:
- Added support for new barcode types Maxicode, rMQR code, Code 11 and Code 32.
- Added properties
australiaPostCustomerFormat
,useIATA2OF5Checksum
anduseCode11Checksum
toBarcodeAdditionalParameters
,BarcodeScannerAdditionalConfiguration
for RTU UI screen andBarcodeRecognizerConfiguration
for RTU UI v2 screen. - Added
AustraliaPostCustomerFormat
enum to represent formats of the barcode data for the Australian Post customer barcode. - Added
resetPolygonState()
inBarcodePolygonView
to properly clean its state when disabling it after scanning.
- 🚀 Improvements:
- Added support for Extended Channel Interpretation (ECI) for Data Matrix and Aztec.
- Improved GS1 string handling with new modes for decoding and validation. See
Gs1Handling
. ScanbotCameraXView
now logs more information throughout its lifecycle (use filter byScanbotCameraXView
tag). Logging is enabled only in the 'debug' builds.- Improved detection of UPC/EAN barcode extensions in live mode.
- The barcode scanner now supports transposed (mirrored/flipped) Aztec barcodes.
- 🐞 Bug fixes:
- Fixed R8 obfuscation config for SDK logging classes.
- Fixed a bug in
ScanbotColor
where settingisArgb
to true, resulted in a wrong color.
- ⚠️ Breaking Changes:
- Removed enum
BarcodeDensity
. - Removed property
codeDensity
fromBarcodeAdditionalParameters
. - Removed enum values
VALIDATE
andDECODE
fromGs1Handling
and replaced them byDECODE_STRUCTURE
,DECODE_FULL
,VALIDATE_STRUCTURE
andVALIDATE_FULL
. - Removed redundant fields
barcodeImagePath
andbarcodePreviewFramePath
fromResult
class in Barcode Scanner RTU UI v2. - Changed
barcodesRegexFilter
config behavior for Barcode Scanner RTU UI v2. Barcodes are accepted if the barcode data contains the part that matches the regex.
- Removed enum
- 🚙 Under the hood:
- Updated 3rd-party libraries:
- added
gs1-syntax-dictionary
lib
- added
- Updated 3rd-party libraries:
Version 5.1.2 (27 Jun 2024)
- 🚀 Improvements:
- Improved detection of UPC/EAN barcode extensions in live mode.
- The barcode scanner now supports transposed (mirrored/flipped) Aztec barcodes.
- 🐞 Bug fixes:
- Fixes a bug in
ScanbotColor
where settingisArgb
to true, resulted in a wrong color.
- Fixes a bug in
Version 5.1.0 (29 May 2024)
- 🎉 New:
- Added new property
barcodesRegexFilter
toBarcodeRecognizerConfiguration
for Barcode Scanner RTU UI v2 screen. - Added support of the new 'Find and Pick' barcode scanning mode, see
FindAndPickScanningMode
. - Added support for continuous scanning in the
BarcodeScannerView
composable. - Added support for new barcode format
BarcodeFormat.MICRO_PDF_417
. - Added support for parsing of AAMVA Certificate of Title for motor vehicle barcodes.
- Added new class
BarcodeTextLocalization
and new propertylocalization
toBarcodeScannerConfiguration
to support localized strings.
- Added new property
- 🐞 Bug fixes:
- Fixed
SoundController
crash on Android API <= 23. - Fixed behavior of 'Update' Button in Manual Count Edit Dialog for Barcode Scanner RTU UI v2 screen.
- Fixed
- ⚠️ Breaking changes:
- Replaced the class
BarCodeFormattedResult
byGenericDocuments
class for barcode document parser output. - Added new classes for all the barcode document formats. See the API documentation for more details.
- Deleted deprecated
isLicenseActive
andisLicenseValid
fromScanbotBarcodeScannerSDK
. Please uselicenseInfo.isValid
instead. - Renamed
ScanbotPalette
toPalette
for consistency with RTU UI v2 configuration classes. BarcodeExtensionsFilter
now accepts EAN and UPC barcodes with extensions only and all other formats without extensions.- Made the property
type: BarcodeFormat?
inio.scanbot.sdk.ui_v2.barcode.configuration.BarcodeItem
optional. - Changed default UI behavior in Barcode Scanner RTU UI v2. If
BarcodeMappedData.barcodeImage
inBarcodeItemMapper
is empty - placeholder image will be shown. IfBarcodeMappedData.barcodeImage
is set withBarcodeMappedDataExtension.barcodeFormatKey
constant - the barcode image will be displayed.
- Replaced the class
- 🚙 Under the hood:
- Updated 3rd-party libraries:
- libjpeg-turbo to 2.1.5.1
- libpng to 1.6.40
- libtiff to 4.6.0
- Extracted parts of
ScanbotBarcodeScannerSDK
API to theLicensableSdk
andBarcodeScanningSdk
interfaces. - Migrated project to AGP 8.x.
- Added more rules for R8 shrinker to work adequately with AGP >= 8.
- Added
Theme.AppCompat.NoActionBar
theme as default for Barcode Scanner RTU UI v2 activity. - Added Consumer Proguard rules for RTU UI v2 modules.
- Updated 3rd-party libraries:
Version 5.0.0 (1 Mar 2024)
- 🎉 New:
- Added new freshly designed RTU-UI version 2 for Barcode scanning with advanced agile configuration. Use
io.scanbot:rtu-ui-v2-barcode
module dependency to access the new screen.
- Added new freshly designed RTU-UI version 2 for Barcode scanning with advanced agile configuration. Use
- 🚀 Improvements:
- Optimized speed of the camera preview frames handling for all scanners.
- Changed the touch to focus square in
ScanbotCameraXView
to a circle.
- 🐞 Bug fixes:
- For
BarcodeFormat.PDF_417
, a single case to generate clusters was not covered, which led to a crash. - Fixed issue with misaligned barcode polygons on some devices with horizontal orientation.
- For
- ⚠️ Breaking changes:
- Renamed
RSS_14
barcode format toDATABAR
andRSS_EXPANDED
toDATABAR_EXPANDED
. BatchBarcodeScannerActivity
class from RTU UI v1 is now marked as 'Deprecated'.- Removed
BarcodeFormat.CODE_25
fromBarcodeFormat.COMMON_CODES
list. ZoomRange
can be created with any input values but will be limited under the hood by internalMIN_ZOOM
(x0.2) andMAX_ZOOM
(x100) values.
- Renamed
- 🚙 Under the hood:
- Class
SoundController
was renamed toSoundControllerImpl
and interfaceSoundController
was extracted.
- Class
Version 4.2.0 (07 Dec 2023)
- 🎉 New:
- Added support for new barcode type
GS1_COMPOSITE
.
- Added support for new barcode type
- 🚀 Improvements:
- Added more control over how to handle GS1 messages in barcodes. See
BarcodeScannerAdditionalConfig.setGs1HandlingMode
.
- Added more control over how to handle GS1 messages in barcodes. See
- ⚠️ Breaking Changes:
- The property
enableGS1Decoding
has been replaced by the enumGs1HandlingMode
inBarcodeScannerAdditionalConfig
. GS1
codes are now handled differently for various barcode types. Using the default optionPARSE
will give the same result as before for all barcode types, except ofRSS_EXPANDED
. Previously, forRSS_EXPANDED
, the result was inconsistently returned with parentheses. Now, to get results with parentheses for all barcode types, it is needed to choose the optionDECODE
.
- The property
Version 4.1.0 (30 Nov 2023)
- 🎉 New:
- Added new supported barcode formats -
BarcodeFormat.USPS_INTELLIGENT_MAIL
,BarcodeFormat.ROYAL_MAIL
,BarcodeFormat.JAPAN_POST
,BarcodeFormat.ROYAL_TNT_POST
,BarcodeFormat.AUSTRALIA_POST
andDATABAR_LIMITED
.
- Added new supported barcode formats -
- 🚀 Improvements:
- Optimized default and custom preview/picture size selection in the
ScanbotCameraXView
. - Optimized
setForceMaxSnappingSize(enabled: Boolean)
behavior in theScanbotCameraXView
. - Improved pinch-to-zoom gesture in
ScanbotCameraXView
. - Added
setLifecycleOwner(lifecycleOwner: LifecycleOwner)
method for view controller inBarcodeScannerView
to improve compatibility with Compose UI.
- Optimized default and custom preview/picture size selection in the
- 🐞 Bug fixes:
- Added
setBarcodeFormatsFilter(barcodeFormat: List<BarcodeFormat>)
method inBatchBarcodeScannerConfiguration
class.
- Added
- ⚠️ Breaking changes:
- If you are using
setPictureSize(pictureSize: Size)
,setCameraFrameSize(frameSize: Size)
orsetPreviewFrameSize(frameSize: Size)
, make sure input Size has the correct orientation (fits the view or display size). - All scanner components have been switched to zoom ratio (values 1x, 2x, etc.) instead of linear zoom (from 0 to 1). Methods renamed:
setOpticalZoomRange()
->setPhysicalZoomRange()
;setOpticalZoomLevel()
->setPhysicalZoomRatio()
inScanbotCameraXView
,BarcodeScanAndCountView
andBarcodeScannerView
.setPhysicalZoomRange()
andsetPhysicalZoomRatio()
accept possible zoom values from 0.5x up to 100x. NOTE: if the value sent to the camera is out of range for a specific device's capabilities, then the camera will try to set the max or min possible for that specific device. eg. Zoom 100x will only work on some high-end Samsung devices, whereas other devices will only have 12x-30x max. The same goes for minimum supported values, 0.5x is a wide-format camera module that does not exist on many Android devices.
- If you are using
- 🚙 Under the hood:
- Updated version of Nameof C++ library to v0.10.3.
- Disabled GPU acceleration for Redmi 9 models, Samsung Galaxy Grand Prime and devices with Android older than 6.
Version 4.0.1 (12 Sep 2023)
- 🚀 Improvements:
- Fixed false positives for Code 39 and Codabar barcodes.
- Fixed potential memory leak in all RTU-UI screens.
Version 4.0.0 (24 Aug 2023)
- 🚀 Improvements:
- It is now possible to color each barcode on the barcode AR overlay. Use
barcodeScannerView.selectionOverlayController.setBarcodeAppearanceDelegate(delegate: BarcodePolygonsView.BarcodeAppearanceDelegate)
to manage polygon appearance. - Reduced the number of barcode detector models from 3 to 2. The model used in Fast mode is now ~20% faster, about the same speed as Fastest mode.
- It is now possible to color each barcode on the barcode AR overlay. Use
- 🐞 Bug fixes:
- Removed conflicting "app_name" string resources from library modules.
- Fixed bug for
BarcodePolygonsStaticView
where it crashed ifbarcodeItemViewFactory
returnsnull
instead of view. - Before, for certain invalid decodings of QR and MicroQR codes, an exception was thrown from ZXing. Now we rigorously treat this as a format error.
- Before, we have returned CODE_25 results when INDUSTRIAL_2_OF_5 was enabled and CODE_25 was disabled. Now, we do not return the CODE_25 result for such decoding options.
- ⚠️ Breaking changes:
- Removed methods from
BarcodePolygonsView
andBarcodeScannerView.selectionOverlayController
related to polygon and text view appearance. E.g.setStrokeColor
etc. Please useBarcodeAppearanceDelegate
instead!
- Removed methods from
- 🚙 Under the hood:
- Removed
UNKNOWN
barcode type from the API as it is applicable only for internal usage. - Fixed declaration of attributes
polygonStrokeDeclinedColor
andpolygonFillDeclinedColor
.
- Removed
Version 3.7.0 (13 Jul 2023)
- 🎉 New:
- Added support for MicroQR codes.
- Added
setViewFinderEnabled
method toBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
- this toggles the visibility of the viewfinder. Defaults totrue
. - Added a scanned barcode confirmation dialog in the
BarcodeScannerActivity
RTU screen and a configuration classBarcodeConfirmationDialogConfiguration
inBarcodeScannerConfiguration
to modify the dialog UI. - Added Scan and Count of Barcodes feature. Use
BarcodeScanAndCountView
to integrate it into your app. - Added a new public interface for extracting images from PDF files: PdfImagesExtractor.
- Added a new implementation of
PdfImagesExtractor
andPdfPagesExtractor
based on the Pdfium library. Add the optional 'io.scanbot:barcode-sdk-pdfium:SDK_VERSION' dependency to use it.
- 🚀 Improvements:
- Stripped down the Android dynamic symbol table in native libraries. As a result, the size of the native shared libraries has decreased.
- Improved accuracy and detection speed of QR_CODE, Code39, and Code93 barcode types.
- Added support for inverted PDF-417 barcodes.
- Optimized the size of native libraries integrated into the Scanbot Barcode SDK.
- Added a flag
detectFromNv21(..., isLive: Barcode)
inScanbotBarcodeDetector
to detect barcodes on NV21 images in the static image mode.
- 🐞 Bug fixes:
- Fixed a crash within the barcode detector.
- Fixed a typo in Libraries.txt.
- Fixed the detection of a few false positive RSS_EXPANDED barcodes in live mode.
- Fixed a bug with incorrect (mirrored) preview when
CameraModule.FRONT
is set up forScanbotCameraXView
.
- 🚙 Under the hood:
- Improved attribute handling to support the generation of one AAR.
- The BlackView and Caterpillar brands have been excluded from GpuAcceleration-supported devices.
- Improved cross-platform parameter handling from the refactored configurations structure.
- Added an OPTIONAL 3rd-party open-source dependency - the Pdfium library (licensed under the Apache License Version 2.0). By default, the Pdfium library is NOT added to the Scanbot Barcode SDK dependencies.
Version 3.6.1 (25 May 2023)
- 🐞 Bug fixes:
- Fixed a crash within the barcode detector.
- Fixed typo in Libraries.txt.
- 🚙 Under the hood:
- Improved attributes handling to support generation of one AAR.
Version 3.6.0 (03 May 2023)
- 🎉 New:
- Added type
BarcodeFormat.CODE_25
that was previously considered as typeINDUSTRIAL_2OF5
without checksum. TheINDUSTRIAL_2OF5
checksum option is now removed and thus, depending on a valid checksum, we either returnINDUSTRIAL_2OF5
orCODE_25
.
- Added type
- 🚀 Improvements:
- Added
BarcodeItemViewPositionHandler
that helps to adjust the position of the barcode description view in relation to the polygon contour. - Improved preview quality selection logic for
ScanbotCameraXView
. - Stacked RSS barcode scanning has seen substantial improvements.
- Improved the
FinderOverlayView
behavior when the UI container is dynamically resized (e.g., on keyboard events, etc.). - Added
setForceMaxSnappingQuality(enabled: Boolean)
inIScanbotCameraView
interface (implemented only in ScanbotCameraXView implementation): controls whether the camera should force the maximum possible quality for the snapped picture. As a result, the snapping speed could be significantly slower and the resulting image could be bigger. The default isfalse
. - Added
setSnappingAutoAdjustment(enabled: Boolean)
inIScanbotCameraView
(implemented only in ScanbotCameraXView implementation): controls whether the camera should apply image post-processing (e.g., switching to low-light mode or HDR mode, applying face retouch, etc.). Implementation of post-processing depends on the vendor's implementation of the Camera API. The default isfalse
.
- Added
- 🐞 Bug fixes:
- Fixed a visual glitch with
ScanbotCameraXView
on Xiaomi devices, which happened before the preview started. - Fixed a bug where
ScanbotCameraXView
sometimes threwRejectedExecutionException
after the camera stopped. - Fixed Scanbot camera views not resolving
Context
correctly if used in Activity/Fragment with Hilt's@AndroidEntryPoint
annotation. - Fixed Scanbot RTU-UI scanners handling when the app is terminated in the background.
- Fixed a visual glitch with
- ⚠️ Breaking changes:
FinderAspectRatio
andPageAspectRatio
classes are now deprecated and merged intoAspectRatio
common class. Please useAspectRatio
instead.- Removed parameter
decodeStacks1D
. The decoding of stacked barcodes is now handled automatically. FrameHandler
interface was converted to an abstract class. If you have custom FrameHandlers, please add constructor invocation to your FrameHandler implementation.- Some of the Scanbot SDK artifact IDs have been changed and need to be updated in your
build.gradle
'sdependencies
block:- all users of
io.scanbot:sdk-crypto-persistence
should change this dependency toio.scanbot:bundle-sdk-crypto-persistence
(or toio.scanbot:barcode-sdk-crypto-persistence
if you are using Scanbot Barcode standalone SDK)
- all users of
- 🚙 Under the hood:
- Enabled
-fstack-protector-all
on Android - Removed usage of
backward-cpp
library - FrameHandlers won't return the result if
FrameHandler.isEnabled
is set tofalse
after actual frame detection - Bumped Dagger version to 2.44
- Updated Kotlin library to 1.7.10
- Changed the default JPEG compression quality from 95 to 100 for
ScanbotCameraXView
. As a result, snapped images will be bigger but of better quality
- Enabled
Version 3.5.0 (27 Feb 2023)
- 🎉 New:
- Added a new
automaticSelectionEnabled
option toSelectionOverlayConfiguration
forBarcodeScannerActivity
andBatchBarcodeScannerActivity
RTU UI screens
- Added a new
- 🚀 Improvements:
- The raw string is returned for RSS Expanded barcodes that don't contain a GS1 string
- Updated
BarcodeScannerAdditionalConfigBuilder
withdecodeStacks1D
andcodeDensity
parameters
- 🐞 Bug fixes:
- Fixed the
ScanbotCameraXView
instantiation error in Layout Editor - Fixed the memory leak of CameraManager in
ScanbotCameraXView
- Fixed NPE in the
ScanbotCameraXView
when thestartPreview()
function is called while theScanbotCameraXView
was detached - Fixed an issue with
InitialScanDelayMs
andDelayAfterScanMs
options not working inBarcodeScannerConfiguration
whenBarcodeImageGenerationType.CAPTURED_IMAGE
andBarcodeImageGenerationType.VIDEO_FRAME
output generation types were used - Fixed
ScanbotCameraXView
not working after reattaching to a window
- Fixed the
- 🚙 Under the hood:
- Update TensorFlow Lite to 2.10
Version 3.4.0 (16 Dec 2022)
- 🎉 New:
- Added new parameter
decodeStacks1D
inBarcodeScannerAdditionalConfig
for Barcode Scanner. For stacked RSS barcodes, this should be set to the number of stacks with which the barcode was printed.
- Added new parameter
- 🚀 Improvements:
- Improved recognition of inverted barcodes
- Improved performance and reduced false positive rate for stacked RSS barcodes
- Improved performance of DataMatrix and QR-codes
- 🚙 Under the hood:
- Added third-party libraries (backward-cpp v1.6 and magic-enum v0.8.1)
Version 3.3.1 (17 Nov 2022)
- 🐞 Bug fixes:
- Fixed crashes on devices running Android 5 and 6 in some scenarios
- Fixed compatibility with 3rd party obfuscated libraries
- 🚙 Under the hood:
- Removed CommonsIo, CommonsCodec and CommonsLang dependencies
- Changed the package name to
io.scanbot.sdk.PUBLISH_ARTIFACT_ID
for the internal obfuscated classes - Improve allocated memory releasing mechanism for Barcode Scanner
Version 3.3.0 (25 Oct 2022)
- 🎉 New:
- Added
setVibrationEnabled(enable: Boolean)
method to enable/disable the vibration feature inio.scanbot.sdk.util.snap.SoundController
class. NOTE:android.permission.VIBRATE
permission is required! - Added
bleepResId: Int
andbleepUri: Uri
parameters to theSoundController
class constructors to customize the bleep sound. By default the SDK specific sound will be played. - New barcode types are supported: IATA 2 of 5 and Industrial 2 of 5. Please note that they are disabled by default. See
BarcodeFormat
BarcodePolygonsView
allows visualization of barcode contours when using classical components- Selection overlay layer based on
BarcodePolygonsView
can be enabled forBarcodeScannerView
viaBarcodeScannerView.selectionOverlayController.setEnabled
- Selection overlay can be enabled and configured for ready-to-use UI via
BarcodeScannerConfiguration.setSelectionOverlayConfiguration(...)
- New properties
InitialScanDelayMs
andDelayAfterScanMs
inBarcodeScannerConfiguration
allow delaying the initial scan and/or pausing the preview after scanning the barcode
- Added
- 🚀 Improvements:
- Improved crops and contours for detected barcodes
- 🐞 Bug fixes:
- Fixed a bug with RTU Barcode scanner not being able to produce image of
BarcodeImageGenerationType.CAPTURED_IMAGE
when an instance ofIBarcodeFilter
is set.
- Fixed a bug with RTU Barcode scanner not being able to produce image of
- ⚠️ Breaking changes:
- Moved and renamed
io.scanbot.sdk.ui.utils.ScanBeeper
class from the RTU-UI module to the packageio.scanbot.sdk.util.snap.SoundController
in the basescanbot-sdk-1
module.
- Moved and renamed
- 🚙 Under the hood:
- For
ScanbotCameraXView
- whenCameraOpenCallback
is set - theonCameraOpened
method's call was moved later in the lifecycle: now called at the latest point in time when the camera preview is confirmed to be streaming. - Updated third-party libraries: Gson to 2.9.1, CommonsIo to 2.11.0 and CommonsCodec to 1.15
- For
Version 3.2.3 (16 Aug 2022)
- 🎉 New:
- Each RTU UI configuration and
ScanbotSDKInitializer
class now containsfromJson(input: String)
andmodifyFromJsonConfiguration(<ScreenName>JsonConfiguration)
methods allowing to create or edit the configuration classes using JSON input. The format of the JSON string should be compatible with<ScreenName>JsonConfiguration
class - Added new configuration option
codeDensity
inBarcodeScannerAdditionalConfig
for Barcode Scanner - Added
codeDensity
configuration option for Barcode Scanner RTU UI screen
- Each RTU UI configuration and
- 🚀 Improvements:
- Added new insets API for the finder box:
finderInsets
allows setting the finder edge padding from the camera preview edges.safeAreaInsets
can add additional padding to the finder. This is particularly useful when part of the camera preview is covered by another widget (e.g. a navigation bar), thus preventing the finder from appearing behind this widget.
- Added new insets API for the finder box:
- 🐞 Bug fixes:
- Fixed incorrect preview size calculation after granting permission for legacy
ScanbotCameraView
- Fixed incorrect preview size calculation after granting permission for legacy
- ⚠️ Breaking changes:
- Changed the default Camera View to ScanbotCameraXView based on CameraX API in all RTU UI screens
- Removed
EngineMode.Legacy
support for Barcode Scanner setFinderOffset
deleted. UsefinderInset
values instead
- 🚙 Under the hood:
- Updated
compileSdk
version to 31 - Updated Android CameraX version to 1.1.0
- Updated the version of kotlin std library to 1.6.21
- Updated the version of Dagger library to 2.41
- Updated Boost C++ version to 1.79.0
setFinderMinPadding()
works onfinderInsets
API
- Updated
Version 3.2.2 (13 Jun 2022)
- 🎉 New:
- Added
Fragment.registerForActivityResultOk
method for calling activity from fragments for subscribing to success result with the new Activity Result API. - With the new
BarcodeScannerView
Classical component, the integration of barcode scanning with a Custom UI is now even easier!
- Added
- 🚀 Improvements:
- Improved behavior of FinderOverlayView and its child classes. Now any Finder View can inject other layouts inside itself and these parts would be properly positioned with the finder window changes.
There are 3 customizable parts:
- top - is a zone above the finder window. Can be used for inserting some hints.
- bottom - is a zone below the finder window. Can be used for inserting some hints.
- center - is a zone inside the finder window. Can be used for showing an overlay inside the finder window.
- Improved behavior of FinderOverlayView and its child classes. Now any Finder View can inject other layouts inside itself and these parts would be properly positioned with the finder window changes.
There are 3 customizable parts:
- 🐞 Bug fixes:
- Fixed a crash on specific PDF-417 codes with boarding passes.
- Fixed a potential crash in
ScanbotCameraXView
when taking a picture after the screen was paused.
- ⚠️ Breaking changes:
finder_description
view id is no longer used to place text views below the finder. Please use new API.
Version 3.2.1 (20 Apr 2022)
- 🐞 Bug fixes:
- Fixed a crash on specific PDF-417 codes with boarding passes
Version 3.2.0 (07 Apr 2022)
- 🚀 Improvements:
- Huge improvement on the speed and accuracy of 1D barcodes recognition.
- Native libraries size decreased by more than 20%
- 🐞 Bug fixes:
- By default, GPU acceleration has been enabled (issues with the Samsung S22 series devices are fixed).
- Fixed cropped images of 1D barcodes.
- 🚙 Under the hood:
- Updated the version of JSON for Modern C++ library to 3.10.2
- Updated the version of BOOST C++ library to 1.75.0
- Updated the version of OpenCV library to 4.5.3
- Updated the version of Nameof C++ library to 0.10.1
- Updated the version of LibTIFF library to 4.2.0
- Updated the version of ZXing-C++ library to 1.1.0
- Updated the version of OpenSSL library to 1.1.0h
- Updated the version of XNNPACK library to fb8d1f1b2 git commit
- Updated the version of TensorFlow library to 339ccc2b03 git commit
- Replaced the OpenJPEG library with libjpeg-turbo library 2.1.2
- Added the Skia library of 47b4b19 git commit
- Added the spdlog library of 1.9.2 version
Version 3.1.2 (11 Mar 2022)
- 🐞 Bug fixes:
- By default, GPU acceleration has been disabled (due to issues on the Samsung S22 series devices). To enable it, use
ScanbotBarcodeScannerSDKInitializer().allowGpuAcceleration(true)
. - Fixed an incorrectly thrown
FileAccessException
inScanbotBarcodeScannerSDKInitializer
when cleaning deprecated blob files.
- By default, GPU acceleration has been disabled (due to issues on the Samsung S22 series devices). To enable it, use
Version 3.1.1 (23 Feb 2022)
- 🎉 New:
- Added the possibility to replace the cancel button in the RTU UI top toolbars with an icon. Please check the
configuration.setCancelButtonIcon()
methods of the configuration. - Added a class
BarcodeDocumentParser
to parse a string into a supported barcode document type. - Added support for the GS1 barcode document format, see
Gs1Document
.
- Added the possibility to replace the cancel button in the RTU UI top toolbars with an icon. Please check the
- ⚠️ Breaking changes:
- Renamed the class
DisabilityCertificateDocument
in the barcode scanner toMedicalCertificateDocument
.
- Renamed the class
- 🚙 Under the hood:
- Removed the usage of fragments in
BarcodeScannerActivity
andBatchBarcodeScannerActivity
.
- Removed the usage of fragments in
Version 3.1.0 (14 Jan 2022)
- 🎉 New:
- Added
fun setMinFocusDistanceLock(lock: Boolean)
inBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
for RTU UI screens to lock in the minimum supported camera focus distance (supported only with CameraX) - Added
fun lockMinFocusDistance(lock: Boolean)
inIScanbotCameraView
to lock in the minimum supported camera focus distance (supported only with CameraX) - New option
lowPowerMode: Boolean
inBarcodeScannerAdditionalConfiguration
forBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
for RTU UI screens andScanbotBarcodeDetector
classical component
- Added
- 🚀 Improvements:
- Significantly improved recognition of Aztec barcodes
- Added method
setFinderMinPadding
to theFinderOverlayView
, making it possible to change this value programmatically rather than only from XML
- 🐞 Bug fixes:
- Fixed a bug which made it impossible to start RTU UI activities with the legacy startActivityForResult approach
Version 3.0.8 (15 Dec 2021)
- 🎉 New:
- Added Scanbot implementation of AndroidX Activity Result API to every RTU UI activity. Please see the documentation for RTU UI components.
- Added properties
textWithExtension
andmetadata
toBarcodeItem
to support barcode extensions of UPC and EAN barcodes - The results screen of the
BatchBarcodeScannerActivity
now displaystextWithExtension
instead oftext
- Added new boolean flag
enableNativeLogging
(by default - false) inScanbotBarcodeScannerSDKInitializer#withLogging(useLog: Boolean, enableNativeLogging: Boolean)
method - Support for barcode scanner results filtering in RTU-UI barcode scanning components
- Added 2 implementations of
IBarcodeFilter
interface -BarcodeFilter
andBarcodeExtensionsFilter
- New setters
setBarcodeFilter(barcodeFilter: IBarcodeFilter)
inBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
for RTU UI screens - Added
setPreviewFrameSize(frameSize: Size)
andsetAnalyzerFrameSize(frameSize: Size)
methods inScanbotCameraXView
for more flexible camera frame size modifications
- 🐞 Bug fixes:
- Fixed a crash in the barcode detector with Legacy engine mode on stable images
- Fix incorrect preview size resolving which caused the impossibility to perform scanning with the legacy ScanbotCameraView on some budget devices