Breaking API changes
- Renamed
DetectionLeveltoSensitivityLevel. - Renamed
ScanningSettings.tiltDetectionLeveltotiltSensitivityLevel. - Renamed the BlinkCard anonymization API to redaction:
AnonymizationMode→RedactionModeAnonymizationSettings→RedactionSettingsCardNumberAnonymizationSettings→CardNumberRedactionSettingsScanningSettings.anonymizationSettings→redactionSettings
- Removed
AnonymizationSettings.cardNumberPrefixAnonymizationMode. The card-number prefix now followsCardNumberRedactionSettings.mode. - Renamed
CheckResult.NotPerformedtoCheckResult.NotAvailable, matching the name used by the scanning core. This affects every property typedCheckResult:CardLivenessCheckResult.screenCheckResult,photocopyCheckResultandcardHeldInHandCheckResult, andBlinkCardScanningResult.overallCardLivenessResult. The value and its meaning are unchanged — only the name differs. RequestTimeoutnow useskotlin.time.Durationinstead of milliseconds:connectionTimeoutMillis,writeTimeoutMillisandreadTimeoutMillis(Int) →connectionTimeout,writeTimeoutandreadTimeout(Duration)RequestTimeout.DEFAULTchanged from 10 to 30 seconds. This affectsBlinkCardSdkSettings.resourceRequestTimeout.
- Moved
defaultResourceDownloadUrlfromcom.microblink.blinkcard.core.utilstoResourcesConfig.defaultResourceDownloadUrl(com.microblink.blinkcard.core.settings). - Added
SdkInitError.SettingsValidationError, reported when SDK settings fail validation. Exhaustivewhenexpressions overSdkInitErrorneed a new branch. - Reworked the onboarding and help dialog strings:
- Removed
SdkStrings.helpDialogsStrings. UseBlinkCardSdkStrings.blinkCardHelpDialogsStrings. - Removed
HelpDialogsStrings.BlinkCardDefault. UseBlinkCardSdkStrings.HelpDialogsDefaults. HelpDialogsStringsis now adata class, andHelpDialogsStrings.Emptyhas been removed.BlinkCardSdkStrings.Defaultnow uses the new BlinkCard-specific accessibility strings,AccessibilityStrings.BlinkCard.
- Removed
See the transition guide for before-and-after examples.
Custom UI integrations
These changes only affect applications that build their own scanning UI on top of blinkcard-ux components:
ImageAnalyzer.restartAnalysis()is now asuspendfunction, andImageAnalyzer.timeoutAnalysis()now takes aTimeoutCause(SteporInactivity).ErrorReason.ErrorTimeoutExpiredwas split intoErrorStepTimeoutExpiredandErrorInactivityTimeoutExpired. AddedErrorSettingsValidationFailedandErrorGetResultFailed.- Added
BaseUiState.scanSoundState, and newallowScanSoundandonScanSoundCompletedparameters onScanningUx.
Requirements and dependency updates
- Applications must compile with compileSdk 36 and use Android Gradle Plugin 8.9.1 or newer.
- The SDK now depends on Kotlin standard library 2.2.21 (was 2.1.20). Kotlin 2.1 or newer is required to compile against it.
blinkcard-uxnow declares a dependency on Jetpack Compose UI 1.11.2. Applications on an older Compose UI version are upgraded to 1.11.2 automatically. Applications that force an older version (for example withstrictly) are not supported and will crash when the scanning screen opens.blinkcard-corenow depends on OkHttp 5.3.2 (was 4.12.0).- Other dependency updates: CameraX 1.6.1 (was 1.4.2), Material 3 1.4.0 (was 1.3.2), Activity Compose 1.13.0 (was 1.10.1), Lifecycle 2.10.0 (was 2.9.x), DataStore 1.2.1 (was 1.1.4).
- Android API level 24 or newer is still required to run the SDK.
Security-focused redaction defaults
- Card-number and CVV redaction now default to
RedactionMode.FullResult. - Card-number redaction leaves four prefix and four suffix digits visible by default.
- IBAN and cardholder-name redaction continue to default to
RedactionMode.None.
Applications that need the previous unredacted behavior must explicitly configure RedactionMode.None. Review this choice against your data-handling requirements before changing the new defaults.
BIN check
- Added
CardAccountResult.binCheckResult. - The result is
CheckResult.Pass,CheckResult.Fail, orCheckResult.NotAvailable. - BIN check requires a license containing the
recognizer_blinkcard_allow_bin_checkright and is disabled by default for production licenses.
Scanning session timeouts and feedback
- Added
BlinkCardUxSettings.inactivityTimeoutDuration, which triggers a timeout when scanning makes no progress. It resets whenever scanning advances, either because the UI state changes (reticle type or message) or because the card is located and being processed. Defaults to 10 seconds. BlinkCardUxSettings.stepTimeoutDurationnow covers a single scanning step: it resets on side changes and pauses while the onboarding and help dialogs are shown. Its default changed from 15 to 60 seconds.- Both timeouts can be disabled by setting them to
Duration.ZERO. - Added
BlinkCardUxSettings.allowScanSoundto toggle scan success sounds. Defaults totrue. - Added a Java-friendly
BlinkCardUxSettings(int stepTimeoutDurationMs, int inactivityTimeoutDurationMs, boolean allowHapticFeedback, boolean allowScanSound)constructor. - The "need help?" tooltip now appears after a fixed 10 seconds. Previously it appeared after half of
stepTimeoutDuration(7.5 seconds by default).
Other improvements
- Added
CameraSettings.desiredAspectRatio(DesiredAspectRatio.RATIO_16_9by default, orRATIO_4_3) to choose the camera preview aspect ratio. - Initialization errors now follow the current native session error model, including the new
SdkInitError.SettingsValidationError. - BlinkCard SDK initialization analytics now correctly report whether Ping and Baltazar proxy routing is enabled.