Changelog | Android Barcode Scanner
tip
For additional details about the API, please refer to our API reference documentation.
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
- π Improvements:
- Improved recognition of small barcodes on large images
- Improved recognition of stacked RSS Expanded (GS1) barcodes
- Improved rectangular DataMatrix performance
- Increased performance on stable images with PDF-417 barcodes
- If the Scanbot SDK is not initialized, RTU UI screens are force closed without the RuntimeException
- β οΈ Breaking changes:
- Renamed
setPreviewSize(previewSize: Size)
tosetCameraFrameSize(frameSize: Size)
inScanbotCameraXView
- Constants
RESULT_LICENSE_INVALID
,CANCELLATION_REASON_TIMEOUT
,SCANNED_BARCODE_EXTRA
,SCANNED_BARCODE_IMAGE_PATH_EXTRA
,SCANNED_BARCODE_PREVIEW_FRAME_PATH_EXTRA
were deleted. Instead we have implemented AndroidX Activity Result API for RTU UI components. Also - if you prefer to stick with deprecatedstartActivityForResult
approach - we have added utility methods that encapsulate all the verbosity of getting the result entity from the activity's resultBundle
. Please see the documentation for RTU UI components.
- Renamed
- π Under the hood:
- Updated the version of CWAC Camera library to 0.6.42
Version 3.0.7 (30 Nov 2021)β
- π Bug fixes:
- Fixed a bug for when
BatchBarcodeScannerActivity
ignored the parameter passed tobatchBarcodescannerConfiguration.setCameraModule()
- Fixed a bug for when
Version 3.0.6 (5 Nov 2021)β
- π New:
- Added
allowGpuAcceleration(enable: Boolean)
method inScanbotBarcodeScannerSDKInitializer
which enables GPU acceleration for TensorFlow ML models - Added
precompileGpuMlModels(precompilingCallback: () -> Unit)
method inScanbotBarcodeScannerSDKInitializer
which performs GPU ML models precompilation
- Added
- π Bug fixes:
- Fixed a bug in
BatchBarcodeScannerActivity
for when it doesn't show the camera preview after the camera permission approval - Fixed a bug when
BarcodeScannerActivity
does not detect any barcodes with the image generation type VIDEO_FRAME - Fixed possible crash with Barcode Scanner activities after the camera permission request
- Fixed a bug in
- π Under the hood:
- Updated 3rd party libraries used in SDK, see [[Open Source Libraries in Scanbot SDK]]
Version 3.0.5 (13 Oct 2021)β
- π New:
- A new method
forceClose()
was added into our RTU UI components allowing to manually finish the RTU UI Screen (Activity) from the calling code - Now it is possible to access the current state of the flashlight using
isFlashEnabled
method inIScanbotCameraView
- Ready to Use UI components can now use CameraX under the hood. Use ScanbotBarcodeScannerSDKInitializer.useCameraXRtuUi(true) to enable it
startPreview()
andstopPreview()
methods are available forScanbotCameraXView
as well
- A new method
- π Improvements:
ScanbotCameraXView
now uses better preview quality by defaultScanbotCameraXView
performance was optimized
- π Bug fixes:
- Fixed long initialization of
ScanbotCameraXView
on foldable devices
- Fixed long initialization of
- π Under the hood:
- Refactored internal architecture of all RTU screens
- Removed RxJava and RxAndroid libraries from RTU dependencies
Version 3.0.4 (15 Sep 2021)β
- π New:
- A new flag
allowXnnpackAcceleration
was added inScanbotBarcodeScannerSDKInitializer
allowing to control whether the XNN pack optimizations should be used (true
by default)
- A new flag
- π Bug fixes:
- Fixed
MSI_PLESSEY_CHECKSUM_ALGORITHMS
,STRIP_CHECK_DIGITS
andCAMERA_ZOOM
parameters being ignored in BatchBarcodeScannerConfiguration
- Fixed
- β οΈ Breaking changes:
- The
corner_radius
attribute of FinderOverlayView was renamed tosbsdk_corner_radius
- The
Version 3.0.3 (3 Sep 2021)β
- π Improvements:
- Improved recognition of UPC/EAN barcodes due to ink spread
- The
resultPoints
field of theBarcodeItem
now contains correct information about the contours of the detected barcodes
- π Bug fixes:
- Fixed a rotation issue in
ScanbotCameraXView
- Fixed a rotation issue in
- β οΈ Breaking changes:
- Update compile and target SDK of the library to 30
- The
resultPoints
field of theBarcodeItem
is no longer nullable
- π Under the hood:
- Bump CameraX version to stable 1.0.1 and CameraX View to 1.0.0-alpha28
Version 3.0.2 (6 Aug 2021)β
- π New:
PictureCallback
now contains information if the image was captured automatically- Added a new method
takePicture(acquireFocus: Boolean, isCapturedAutomatically: Boolean)
inIScanbotCameraView
which should be called withisCapturedAutomatically = true
from a custom AutoSnappingController - Additional parameter
stripCheckDigits: Boolean
inBarcodeScannerAdditionalConfig
forBarcodeDetector
classical component - Additional parameter
stripCheckDigits: Boolean
inBarcodeScannerAdditionalConfiguration
for RTU UI screens
- π Improvements:
- Significant performance improvements of the scanner
- All-zeros MSI Plessey barcodes are ignored now
- Additional
Information
field in SEPA barcode document type now parsed correctly to match the specification
- β οΈ Breaking changes:
- The parameter
imageOrientation
inPictureCallback
was replaced byCaptureInfo
which contains the orientation of the image and if it was captured automatically - IMPORTANT! Added
create
prefix to names of all the methods inScanbotSDK
andScanbotBarcodeScannerSDK
, that return new instances of scanners, processors or storages. Methods without this prefix returnSingleton
objects. Reference
andHint
fields in SEPA barcode document type were replaced byPurpose
andRemittance
to match the specification
- The parameter
- π Under the hood:
- Updated 3rd party libraries used in SDK (see Third-party Libraries)
Version 3.0.1 (5 Jul 2021)β
- π Bug fixes:
- Fixed a crash after the license expiration in Classical components
Version 3.0.0 (1 Jul 2021)β
- π New:
- Brand new βNext Generationβ machine-learning-based barcode scanning engine with improved reliability and much faster performance
- Added new config parameter
engineMode: EngineMode
inBarcodeScannerConfig
forScanbotBarcodeDetector
. By defaultScanbotBarcodeDetector
usesEngineMode.NextGen
based on a new ML model - Added new RTU config method
setEngineMode(engineMode: EngineMode)
inBarcodeScannerConfiguration
. By default -EngineMode.NextGen
. - Added the possibility to customize the delay between successful frames for
BatchBarcodeScannerActivity
. Default changed from 1000 ms to 0 ms (no delay)
- β οΈ Breaking changes:
- Removed
disableMlDetector
config parameter inBarcodeScannerConfig
. UseEngineMode.LegacyFast
instead. - Removed
BarcodeDetectorType
class andsetDetectorType()
method from Barcode RTU screens. UsesetEngineMode(engineMode: EngineMode)
instead. - Removed unused parameters
width: Int
andheight: Int
fromdetectFromJpeg(jpeg: ByteArray, frameOrientation: Int)
method inScanbotBarcodeDetector
- Removed
- π Under the hood:
- New third-party libraries: xsimd, xtl und xtensor (see Libraries.txt)
Version 1.8.0 (17 Jun 2021)β
- π New:
- Added a new supported barcode format
BarcodeFormat.MSI_PLESSEY
. By default MSI-Plessey is disabled, you must explicitly pass it as an accepted type - Additional parameter
msiPlesseyChecksumAlgorithms: EnumSet<MSIPlesseyChecksumAlgorithm>
inBarcodeScannerAdditionalConfig
forBarcodeDetector
classical component - Additional parameter
msiPlesseyChecksumAlgorithms: EnumSet<MSIPlesseyChecksumAlgorithm>
inBarcodeScannerAdditionalConfiguration
for RTU UI screens - Added new parameter to the
SdkLicenseInfo
classlicenseStatusMessage: String?
- Added a new supported barcode format
- π Improvements:
- Clearer default values for user guidance strings on RTU UI screens
- π Bug fixes:
- Fixed a problem with UPC-A barcodes being recognized as EAN13 barcodes
- β οΈ Breaking changes:
- Changed signature of the
handleLicenceStatusError
method inIScanbotSDKLicenseErrorHandler
. Added additional parametererrorMessage : String
- Changed signature of the
Version 1.7.0 (21 Apr 2021)β
- π New:
- Added a new option
setOpticalZoomRange(zoomRange: ZoomRange)
inIScanbotCameraView
- Added two new options
setCameraZoomFactor(zoomFactor: Float)
andsetCameraZoomRange(zoomRange: ZoomRange)
inBarcodeScannerConfiguration
forBarcodeScannerActivity
RTU screen - Added
gs1DecodingEnabled
parameter inBarcodeScannerAdditionalConfig
andBarcodeScannerAdditionalConfiguration
to disable the decoding of FNC1 characters in CODE128 barcodes
- Added a new option
- π Improvements:
- Initialization parameters for
AESEncryptedFileIOProcessor
(key: SecretKey?
,initializationVector: ByteArray
,salt: ByteArray
anditerationCount: Int
) became public.
- Initialization parameters for
Version 1.6.0 (29 Mar 2021)β
- π New:
- Now it is possible to set
ScanbotBarcodeDetector
to scan only the given types ofBarcodeDocumentFormat
and filter out others automatically - Added
minimumTextLength
,maximumTextLength
,minimum1DQuietZoneSize
params forScanbotBarcodeDetector
asBarcodeScannerAdditionalConfig
entity. - Added new method
setBarcodeScannerAdditionalConfiguration
for RTUBarcodeScannerConfiguration
to set theminimumTextLength
,maximumTextLength
,minimum1DQuietZoneSize
params.
- Now it is possible to set
- π Improvements:
- Wrapped general JVM exceptions with specific Scanbot SDK alternatives to enhance crash report readability.
- Optimized memory consumption of
BarcodeDetector
scanbot-sdk-crypto-persistence
library supports min API 21+
- π Bug fixes:
- Fixed calculation of the visible rectangle for
CameraView
. It solves problems related to the scanning of documents which have borders close to the edge of the screen - Fixed multiple simultaneous detection results on a single ITF barcode
- Fixed calculation of the visible rectangle for
- β οΈ Breaking changes:
- IMPORTANT! Classical component
ScanbotBarcodeDetector
is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).barcodeDetector()
elsewhere will return a new instance of this component with default config. Refer to example implementation. - Removed a set of methods from
ScanbotBarcodeDetector
andBarcodeDetectorFrameHandler
- code should be updated to use newsetConfig
andmodifyConfig
methods andBarcodeScannerConfig
entity. CheckableTextView
was removed from the SDK. Consider the usage ofCheckedTextView
from Android SDK instead
- IMPORTANT! Classical component
- π Under the hood:
- Updated AndroidX Security Crypto library to the version
1.1.0-alpha03
- Removed AndroidX
security-identity-credential
library from dependencies
- Updated AndroidX Security Crypto library to the version
Version 1.5.1 (10 Mar 2021)β
- β οΈ Breaking changes:
- Removed barcode format
BarcodeFormat.MSI_PLESSEY
- Removed barcode format
Version 1.5.0 (22 Feb 2021)β
- π New:
- Added support of parsing of Swiss QR codes in Barcode scanner
- π Under the hood:
- Optimized delay handling between camera frames in
BarcodeDetectorFrameHandler
- Optimized delay handling between camera frames in
Version 1.4.0 (02 Feb 2021)β
- π New:
- Implemented an encrypted storage for the barcode images
- π Bug fixes:
- Fix CameraX view bug with contour detector mirroring in landscape for the front facing camera
Version 1.3.2 (15 Jan 2021)β
- π Bug fixes:
- Further fixes for the "double scan" issue with the RTU UI
BarcodeScannerActivity
- Further fixes for the "double scan" issue with the RTU UI
Version 1.3.1 (12 Jan 2021)β
- π Bug fixes:
- Fixed a concurrency issue (
RejectedExecutionException
) for the frame handling inCameraView
- Fixed a double scan issue for
BarcodeScannerActivity
RTU screen - Fixed a
ShutterButton
animation
- Fixed a concurrency issue (
Version 1.3.0 (17 Dec 2020)β
- π New:
- Added Front Facing Camera support (BETA). Call
setCameraModule(CameraModule.FRONT)
inScanbotCameraView
orScanbotCameraXView
to enable it. - Added
CAMERA_MODULE
configuration parameter for RTU screens - Added
setDetectorType
configuration parameter for barcode scanner and related RTU UI screens. It allows disabling model-based detection which might be helpful to increase the performance in some cases
- Added Front Facing Camera support (BETA). Call
- π Improvements:
- Improved detection of ITF barcodes
- π Bug fixes:
- The flash button on RTU UI screens is not shown anymore on devices without a flashlight
- Fixed live detection that was not working on some devices with non-standard camera frame resolution
- π Under the hood:
- Updated the version of CWAC Camera library to 0.6.40.
Version 1.2.2 (7 Dec 2020)β
- π Bug fixes:
- Fixed incorrect processing of the text part in DataMatrix barcodes with binary data
- Fixed rare case of the QR-codes processing which might lead to a crash
- Some redundant logs were removed
Version 1.2.1 (3 Dec 2020)β
- π New:
BarcodeScannerActivity
andBatchBarcodeScannerActivity
now support a possibility to set a timeout viasetAutoCancelTimeout
method in seconds. In this case, you will getCANCELLATION_REASON_TIMEOUT
= true as an extra forRESULT_CANCELED
in activity result
- π Improvements:
- Better recognition of rotated PDF417 codes
Version 1.2.0 (23 Nov 2020)β
- π Improvements:
- Huge improvements in detection of barcodes of PDF417 type
- π Bug fixes:
- Fixed bug when RTU UI screens might lose their configuration or crash after going to a paused state
- Fixed bug when
BatchBarcodeScannerActivity
was picking only the first barcode on each scanned frame
- π Under the hood:
- Dagger library was updated to 2.25.2
Version 1.1.7 (29 Oct 2020)β
- π New:
- Added
FinderPictureCallback
that automatically crops the visibleFinderOverlayView
zone and fixes an orientation of the snapped image - Optical pinch-to-zoom feature for the
CameraView
and the digital zoom feature (seeZoomFinderOverlayView
) - Consumer proguard rules are now integrated into the library
FormattedBarcodeDataMapper
'sDEFAULT
implementation was removed.null
is new default value forBatchBarcodeScannerActivity.newIntent
method instead. See example.
- Added
- π Improvements:
- Changed
PictureCallback
implementation - it is an abstract class that implementsBasePictureCallback
interface - Improved recognition of barcodes when scanning matrix barcodes from a short distance
- Increased camera preview start speed
- Improved recognition of damaged DataMatrix barcodes
- Changed
- π Bug fixes:
- Added the "force fetch" mechanism for
ScanbotBarcodeDetector
ML blobs.
- Added the "force fetch" mechanism for
- π Under the hood:
- Updated compile SDK of the library to 29
Version 1.1.6 (16 Sep 2020)β
- π Improvements:
- Improved recognition of damaged DataMatrix barcodes
- π Under the hood:
- Upgraded some libs to latest versions: OpenCV 4.4.0, Kotlin Standard Library 1.4, added OpenJPEG 2.3.1
Version 1.1.5 (20 Aug 2020)β
- π Bug fixes:
- Fixed hanging frame processing in
CameraView
after pausing if the orientation was not locked
- Fixed hanging frame processing in
Version 1.1.4 (14 Aug 2020)β
- π New:
- Added ability to scan multiple barcodes in a row with the new RTU UI Component BatchBarcodeScannerActivity
- π Bug fixes:
- Fixed a crash for barcodes with non-string raw data
- Binary raw data for barcodes now filled correctly in
BarcodeItem.rawBytes
Version 1.1.3 (16 Jul 2020)β
- π Improvements:
- Improved barcode detection model
- Improved handling of ink spread issues with Code128 barcodes
- Improved barcode and QR code live detection especially for very dense codes
Version 1.1.2 (9 Jul 2020):β
- π Improvements:
- Added new barcode format
BarcodeFormat.MSI_PLESSEY
- Minor bugfixes and improvements
- Added new barcode format
Version 1.1.1 (8 Apr 2020):β
- π Improvements:
- Updated ProGuard config
- Improved detection from still images
- Minor bugfixes and improvements
Version 1.1.0 (11 Mar 2020):β
- π Improvements:
- Updated minimum Android API level to 21 (Android 5.0)
- Updated ProGuard config
- Minor bugfixes and improvements
Version 1.0.0 (31 Jan 2020):β
- π First release.
Want to scan longer than one minute?
Generate a free trial license to test the Scanbot SDK thoroughly.
Get your free Trial LicenseWhat do you think of this documentation?
What can we do to improve it? Please be as detailed as you like.