Skip to main content

SDK Release Notes

v3.11.4

Release notes
  • Improvement Pose Estimation V2 — Smoother and more accurate counter-clockwise head-turn detection. The flow now also handles cases where the user starts from a slightly rotated head position.
  • Improvement Pose Estimation V2 — The "straight face" step is easier to complete; users move through the alignment phase faster.
  • Change Pose Estimation V2 — The face-straight guide image and the "keep face straight" text are now shown only while the user is in the straight position, keeping the screen cleaner during the rotation phase.
  • Change Pose Estimation V2 — The instruction text has been moved to the top of the screen so it is no longer hidden behind the user's hand on smaller devices.
  • Fix Pose Estimation V1 — The success callback is now triggered correctly when video recording is enabled.
  • Fix Pose Estimation V2 — The circular progress indicator now resets cleanly when the flow fails, so the retry starts from a clean state.

v3.11.3

Release notes
  • Fix ID Capture — Improved stability in long sessions by preventing memory issues when the screen is opened and closed multiple times.

v3.11.2

Release notes
  • Improvement Pose Estimation V2 — Head-movement tracking feels smoother, and selfies are now taken only when the user is in the straight position for better image quality.
  • Improvement Camera & Location Permissions (All Modules) — Updated to the modern Android permission flow for better compatibility with newer Android versions. Affects every module that requests Camera or Location permissions, including ID Capture, Selfie, Auto Selfie, Pose Estimation, NFC, and Video Call.
  • Fix ID Capture — Resolved crashes and stability issues that could occur when the user navigated away mid-capture.
  • Fix ID Capture — Fixed an issue where the flow could end unexpectedly after video recording finished, especially on slower devices.
  • Fix Pose Estimation V2 — Removed the black bars at the top and bottom of the selfie preview so the camera fills the screen as expected.

v3.11.1

Release notes
  • Fix Pose Estimation V1 — The previously captured selfie is now cleared when the user restarts the flow, so a stale image is never sent within the same session.

v3.11.0

Release notes
  • Feature Pose Estimation V2 — A brand-new 360° head-rotation liveness flow has been added alongside the existing pose flow (V1). V2 shows a circular progress ring that fills as the user rotates their head a full 360°, with animated direction arrows and a face-alignment guide. The V1 flow remains fully supported and unchanged.
@OptIn(AmaniExperimental::class)
val fragment = SelfiePoseEstimation.BuilderV2()
.documentType("XXX_SE_0")
.userInterfaceColors(
overlayBackgroundColor = ContextCompat.getColor(this, R.color.overlay),
progressRingColor = ContextCompat.getColor(this, R.color.green),
progressRingTrackColor = ContextCompat.getColor(this, R.color.gray),
directionArrowColor = ContextCompat.getColor(this, R.color.green),
appFontColor = ContextCompat.getColor(this, R.color.white)
)
.userInterfaceTexts(
faceStraight = "Please keep your face straight",
turnLeft = "Turn your head to the left",
turnRight = "Turn your head to the right",
keepRotating = "Keep rotating your head"
)
.observe(myObserver)
.build(context)
  • Feature Pose Estimation V2 — Added an optional preparation screen shown before the liveness flow starts. It plays a tutorial video inside the circle while the progress ring animates, and displays a configurable instruction message and a Start button so the user begins the flow when ready. Configurable using either Android color resources or plain hex color strings.
.showPreparationScreen(
context = this,
video = R.raw.pose_tutorial, // MP4 only
message = "Watch and follow the head movement",
buttonText = "Start",
buttonTextColor = "#FFFFFF",
buttonBackgroundColor = "#34C759",
buttonRadiusDp = 28f,
overlayColor = "#80000000"
)
  • Feature Pose Estimation V2 — A custom face-guide drawable can now be provided via faceGuideDrawable(@DrawableRes drawable: Int), replacing the default illustration shown inside the oval before rotation begins.
  • Feature Pose Estimation V2 — The preparation screen has its own overlay-background color so it can visually differ from the main liveness screen.
  • Improvement Pose Estimation V2 — Better overall performance, sensitivity and user experience. Reverse-movement detection has been added to prevent accidental progress when the user turns their head back.
  • Improvement Pose Estimation V2 — A full return to the neutral position is now required to complete the challenge, and the progress ring closes correctly at the end.
  • Improvement Pose Estimation V2 — The on-screen direction arrow is bigger and animates more slowly for better visibility during the flow.
  • Change Pose Estimation V2 — V2 is exposed through a dedicated SelfiePoseEstimation.BuilderV2() entry point that only surfaces options relevant to the 360° flow (rotation colors, rotation texts, face-guide drawable). The new API is marked @AmaniExperimental — opt in with @OptIn(AmaniExperimental::class).
  • Fix Pose Estimation V2 — A selfie is no longer captured while the user is in a non-straight position.

v3.10.1

Release notes
  • Improvement ID Capture, Auto Selfie, Pose Estimation — Faster startup. The first capture frame is ready noticeably sooner after the screen opens.
  • Change ID Capture — Lowered the default minimum image-size threshold so more captures pass on a wider range of devices, particularly low- and mid-tier phones.

v3.10.0

Release notes
  • Feature SDK Initialization — A new configureWithLocalFeatures() entry point lets host applications ship dynamic-feature model files (Contact with Amani Team for files if needed.) locally inside the app's assets/ directory instead of downloading them at runtime. Useful for offline environments or networks where the model download is restricted. Supported modules for local provisioning are ID Capture, Hologram Detection, and Auto Selfie.
@OptIn(AmaniRestricted::class)
val localFeatures = DynamicFeatureLocal.Builder()
.idCaptureAsset("id_capture_asset.tflite")
.hologramAsset("hologram_asset.tflite")
.autoSelfieAssets(
autoSelfieAsset1 = "selfie_asset_1.tflite",
autoSelfieAsset2 = "selfie_asset_2.tflite",
autoSelfieAsset3 = "selfie_asset_3.tflite"
)
.build()

Amani.configureWithLocalFeatures(
context = this,
server = "https://server.example",
sharedSecret = "optional_shared_secret",
uploadSource = UploadSource.KYC,
dynamicFeatureLocal = localFeatures
)
  • Improvement SDK Initialization — Faster session start. Capture flows are ready noticeably sooner after configure() and startSession().
  • Change BioLoginUploadSource is now exposed as a typed enum for safer, less error-prone integration. String-based values continue to work for backward compatibility.
  • Fix ID Capture — Resolved an issue that could occur when the screen was opened and closed quickly in succession.
  • Fix BioLogin V2 — The upload source is now applied correctly on the v2 BioLogin flow.

v3.9.3

Release notes
  • Fix Fixed an issue with the logger to ensure more reliable and consistent log output

v3.9.2

Release notes
  • Improvement Enhanced IDCapture UI with an enlarged capture rectangle to ensure consistent and correct rendering across all device sizes
  • Improvement Improved IDCapture failure logging with clearer, more descriptive messages to simplify debugging

v3.9.1

Release notes
  • Improvement Improved IDCapture auto-capture reliability with enhanced accuracy, particularly for passport scanning

v3.9.0

Release notes
  • Feature Terms & Conditions acceptance added to the CustomerInfo module. Use acceptTermsConditions() to let users accept terms programmatically.
Amani.sharedInstance().CustomerInfo().acceptTermsConditions(
callback = object : TermsConditionsCallback {
override fun onSuccess() {
Log.d(TAG, "TermsConditions accepted")
}

override fun onError(exception: Exception) {
Log.e(TAG, "TermsConditions accept request failed! $exception")
}
}
)
  • Feature Eye closure check added to the Pose Estimation module. A new keepEyesOpenAndFaceStraight text field is available in userInterfaceTexts() to display a prompt when the user's eyes are closed during liveness detection.
.userInterfaceTexts(
keepEyesOpenAndFaceStraight = "Please keep your eyes open and look straight at the camera"
)

v3.8.3

Release notes
  • Fix Fixed a configuration retrieval issue and applied minor stability improvements
  • Improvement Improved the logic separation in threshold configuration affecting the IDCapture module

v3.8.2

Release notes
  • Fix Various internal fixes to improve reliability and smooth operation across SDK modules
  • Fix Fixes and stability improvements related to the Remote Logging system to ensure more consistent

v3.8.0

Release notes
  • Improvement Improved stability and overall behavior of the IDCapture module by addressing several edge cases and eliminating known bugs for a smoother capture experience.
  • Improvement Enhanced Pose Estimation module with performance and accuracy improvements to provide more reliable pose detection.
  • Feature Introduced a remote logging and tracing system, enabling logs and operation traces to be monitored remotely for easier debugging and better observability.

v3.7.11

Release notes
  • Improvement Added validation to ensure dynamic feature files are downloaded correctly during the download phase, affecting SelfiePoseEstimation and IDCapture modules.
  • Fix Minor fixes in IDCapture and SelfiePoseEstimation modules.

v3.7.9

Release notes
  • Improvement Passport & ID Capture minor improvements and enhancements

v3.7.8

Release notes
  • Improvement Passport & ID Capture minor improvements and enhancements

v3.7.6

Release notes
  • Improvement ID Capture improvements and enhancements
  • Improvement Selfie Pose Estimation improvements and enhancements

v3.7.3

Release notes
  • Feature Upload source parameter is added into Amani Event Listener's stepResult callback
  • Fix Fix socket not closing issues

v3.7.2

Release notes
  • Feature Add setTextPaddings function into Selfie to configure text view padding
 Amani.sharedInstance()
.Selfie()
...
.setTextPaddings(
left = 20, //Left possible padding accordingly screen dimensions
top = 20, //Top possible padding accordingly screen dimensions
right = 20 //Right possible padding accordingly screen dimensions
)
...

v3.7.1

Release notes
  • Improvement ID Capture improvements and enhancements
  • Improvement Selfie Pose Estimation improvements and enhancements

v3.7.0

Release notes
  • Feature finishSession() function added to terminate all SDK processes. This method should only be called after the SDK flow is fully completed. If the SDK will be used again, you must call startSession() once more after finishSession depending on your lifecycle.
  • Improvement Improve NFC callback exception messages

v3.6.0

Release notes
  • Change Deprecated methods: initAmani() and init(), use configure() instead of init() and startSession() instead of initAmani()
  • Feature Dynamic Feature support has been introduced, allowing selective feature activation based on specific requirements. This enhancement significantly reduces the SDK size by enabling only the necessary features instead of including all functionalities by default.
  • ID Capture – Enables automatic scanning and capturing of ID documents.
  • Hologram Detection – Detects holograms on the document to verify authenticity.
  • NFC Scan – Reads embedded chip data from supported IDs via NFC.
  • Selfie Auto – Automatically captures the user's selfie without manual interaction.
  • Selfie Pose Estimation – Provides liveness detection by analyzing user head and pose movements.

Dynamic Feature Selection: Developers can now enable only the required features, optimizing resource usage.

Smaller SDK Size: By dynamically loading features, unnecessary components are excluded, reducing the overall SDK footprint.

Flexible Configuration: Features such as Auto Selfie Capture, Pose Estimation, ID Capture, Hologram Detection and NFC Scan can be selectively enabled using predefined lists. Usage sample is below:


// Dynamic Feature usages samples, select one configuration accordingly your needs.
Amani.configure(
context = this,
server = "https://server.example",
enabledFeatures = listOf(
DynamicFeature.ID_CAPTURE, // ID document scanning & capture
DynamicFeature.ID_HOLOGRAM_DETECTION, // Detect holograms for authenticity
DynamicFeature.NFC_SCAN, // Read chip data via NFC
DynamicFeature.SELFIE_AUTO, // Automatic selfie capture
DynamicFeature.SELFIE_POSE_ESTIMATION // Liveness detection via pose
)
)

  • Feature 16 KB Page Size Support