DOT Android Face library
v8.4.0
Introduction
DOT Android Face as a part of the DOT Android libraries family provides components for the digital onboarding process using the latest Innovatrics IFace image processing library. It wraps the core functionality of IFace library to a higher-level module which is easy to integrate into an Android application.
Requirements
DOT Android Face has the following requirements:
Minimum Android API level 21
Minimum Kotlin Gradle plugin version 1.6.0 (if used)
Distribution
Modularization
DOT Android Face is divided into core module and optional feature modules. This enables you to reduce the size of the library and include only modules that are actually used in your use case.
DOT Android Face is divided into following modules:
dot-face-core
(Required) - provides API for all the features and functionalities.dot-face-detection-fast
(Optional) - enables the fast face detection feature.dot-face-detection-balanced
(Optional) - enables the balanced face detection feature.dot-face-verification
(Optional) - enables template extraction and face and template matching features.dot-face-eye-gaze-liveness
(Optional) - enables the eye gaze liveness feature.dot-face-passive-liveness
(Optional) - enables the passive liveness feature.dot-face-background-uniformity
(Optional) - enables the background uniformity evaluation feature.dot-face-expression-neutral
(Optional) - enables the face expression evaluation feature.
Each feature module can have other modules as their dependency and cannot be used without it, see the table below. Modules dot-face-detection-fast
and dot-face-detection-balanced
belong to one category, therefore only one of them can be activated.
Module | Dependency |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dot-face-detection-* stands for either dot-face-detection-fast or dot-face-detection-balanced . |
For example, if you want to use Eye Gaze Liveness you will have to use these three modules: dot-face-eye-gaze-liveness
, dot-face-detection-*
(required by dot-face-eye-gaze-liveness
) and dot-face-core
(always required).
Maven Repository
DOT Android Face is distributed as a set of Android libraries (.aar
packages) stored in the Innovatrics maven repository. Each library represents a single module.
In order to integrate DOT Android Face into your project, the first step is to include the Innovatrics maven repository and Google repository to your top level build.gradle
file.
allprojects {
repositories {
maven {
url 'https://maven.innovatrics.com/releases'
}
}
}
Then, specify the dependencies of DOT Android Face libraries in the app build.gradle
file. Dependencies of these libraries will be downloaded alongside them.
dependencies {
//…
implementation "com.innovatrics.dot:dot-face-core:$dotVersion"
implementation "com.innovatrics.dot:dot-face-detection-fast:$dotVersion"
implementation "com.innovatrics.dot:dot-face-verification:$dotVersion"
implementation "com.innovatrics.dot:dot-face-eye-gaze-liveness:$dotVersion"
implementation "com.innovatrics.dot:dot-face-passive-liveness:$dotVersion"
implementation "com.innovatrics.dot:dot-face-background-uniformity:$dotVersion"
implementation "com.innovatrics.dot:dot-face-expression-neutral:$dotVersion"
//…
}
In order to optimize application size, we also recommend adding the following excludes to your application’s build.gradle
file.
android {
//…
packagingOptions {
exclude("**/libjnidispatch.a")
exclude("**/jnidispatch.dll")
exclude("**/libjnidispatch.jnilib")
exclude("**/*.proto")
}
}
Supported Architectures
DOT Android Face provides binaries for these architectures:
armeabi-v7a
arm64-v8a
x86
x86_64
If your target application format is APK and not Android App Bundle, and the APK splits are not specified, the generated APK file will contain binaries for all available architectures. Therefore we recommend to use APK splits. For example, to generate arm64-v8a
APK, add the following section into your module build.gradle
:
splits {
abi {
enable true
reset()
include 'arm64-v8a'
universalApk false
}
}
If you do not specify this section, the resulting application can become too large in size.
Licensing
In order to use DOT SDK in other apps, it must be licensed. The license can be compiled into the application as it is bound to the application ID specified in build.gradle
:
defaultConfig {
applicationId "com.innovatrics.dot.sample"
//…
}
The application ID can be also retrieved in runtime by calling DotSdk.getApplicationId()
.
In order to obtain the license, please contact your Innovatrics’ representative specifying the application ID. If the application uses build flavors with different application IDs, each flavor must contain a separate license. Put the license file into the raw
resource folder.
Permissions
DOT Android Face declares the following permission in AndroidManifest.xml
:
<uses-permission android:name="android.permission.CAMERA" />
Basic Setup
Initialization
Before using any of the components, you need to initialize DOT SDK with the license, DotFaceLibrary
object and list of feature modules you want to use. Each feature module can be activated by a *Module
class. See the table below.
Feature module | Class |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InitializeDotSdkUseCase class in the Samples project shows how to initialize DOT SDK with DotFaceLibrary
and all feature modules. DotSdk.initialize()
method should be called on background thread.
As a result of the initialization a dot folder under the application files folder is created. |
Keep in mind that if you try to use any component without initialization or any feature which was not added during initialization, it will throw an exception. Also be aware that while the app is in background, the system may kill the process to free resources. In such a case, you need to reinitialize the SDK when the app is brought back to the foreground. We recommend to check the SDK initialization status (using DotSdk.isInitialized()
method) in your Fragment’s onViewCreated()
. This technique is implemented in the Samples project.
Deinitialization
When a process (e.g. onboarding) using the DOT Android Face has been completed, it is usually a good practice to free the resources used by it.
You can perform this by calling DotSdk.deinitialize()
. If you want to use the DOT Android Face components again after that point, you need to call DotSdk.initialize()
again. This shouldn’t be performed within the lifecycle of individual Android components.
Logging
By default, logging is disabled. You can enable it by using the following method from the com.innovatrics.dot.core.Logger
class.
Logger.setLoggingEnabled(true)
The appropriate place for this call is within the onCreate()
method of your subclass of android.app.Application
. Each tag of a log message starts with the dot-face:
prefix.
This setting enables logging for all DOT Android libraries. |
Please note that logging should be used just for debugging purposes as it might produce a lot of log messages. |
Components
Overview
DOT Android Face provides both non-UI and UI components. Non-UI components are aimed to be used by developers who want to build their own UI using the DOT Android Face functionality. UI components are build on top of non-UI components. These are available as abstract fragments and can be extended and then embedded into the application’s existing activity providing more control.
List of Non-UI Components
- FACE DETECTOR
A component for performing face detection on an image, creating templates and evaluating face attributes.
- TEMPLATE MATCHER
A component for performing template matching.
- FACE MATCHER
A component for performing face matching.
List of UI Components
- FACE AUTO CAPTURE
A visual component for capturing good quality images of a human face.
- FACE SIMPLE CAPTURE (Deprecated)
A visual component for capturing face images and creating templates suitable for matching without considering image quality requirements.
- EYE GAZE LIVENESS
A visual component which performs the liveness check based on object tracking. An object is shown on the screen and the user is instructed to follow the movement of this object by her/his eyes.
- SMILE LIVENESS
A visual component which performs the liveness check based on the changes in the face expression.
- MAGNIFEYE LIVENESS
A visual component for capturing images suitable for MagnifEye liveness evaluation.
Non-UI Components
Face Detector
The FaceDetector
interface provides the face detection functionality. Face detection stops when maximumFaces
is reached. This component requires dot-face-detection-*
module.
Create a FaceDetector
:
val faceDetector = FaceDetectorFactory.create()
To perform detection, call the following method on the background thread:
val detectedFaces = faceDetector.detect(faceImage, maximumFaces)
Template Matcher
In order to match face templates (1:1), use the TemplateMatcher
interface. The recommended approach is to create face templates using FaceDetector
or Face Auto Capture component and use only templates for matching. This component requires dot-face-verification
module.
Create a TemplateMatcher
:
val templateMatcher = TemplateMatcherFactory.create()
To perform matching, call the following method on the background thread:
val result = templateMatcher.match(referenceTemplate, probeTemplate)
Face Matcher
In order to match face images (1:1), use the FaceMatcher
interface. It is also possible to match a face image against a template (This is a recommended approach if you already have an available reference template). This component requires dot-face-verification
module.
Create a FaceMatcher
:
val faceMatcher = FaceMatcherFactory.create()
To perform matching, call one of the following methods on the background thread:
val result = faceMatcher.match(referenceFaceImage, probeFaceImage)
val result = faceMatcher.match(referenceTemplate, probeFaceImage)
val result = faceMatcher.match(referenceTemplate, probeTemplate)
UI Components
Fragment Configuration
Components containing UI are embedded into the application as fragments from Android Support Library. All fragments are abstract. They must be subclassed and override their abstract methods.
Fragments requiring runtime interaction provide public methods, for example start()
.
class DemoFaceAutoCaptureFragment : FaceAutoCaptureFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
start()
}
//…
}
The FaceAutoCaptureFragment
requires a configuration. To provide configuration data, you should override the provideConfiguration()
method in your subclass implementation. This method should return an instance of the FaceAutoCaptureFragment.Configuration
data class with the desired parameters.
class DemoFaceAutoCaptureFragment : FaceAutoCaptureFragment() {
override fun provideConfiguration() = Configuration(
cameraFacing = CameraFacing.FRONT,
cameraPreviewScaleType = CameraPreviewScaleType.FIT,
//…
)
//…
}
Face size ratio interval
If a face present in an image has the face size out of the face size ratio interval, it won’t be detected. Please note that a wider interval results in a lower performance (detection FPS).
Camera permission
A fragment (UI component) will check the camera permission (Manifest.permission.CAMERA
) right before the camera is started. If the camera permission is granted the fragment will start the camera. If the camera permission is not granted the fragment will use Android API - ActivityResultContracts.RequestPermission to request the camera permission. Android OS will present the system dialog to the user of the app. If the user explicitly denies the permission at this point, onNoCameraPermission()
callback is called. Implement this callback in order to navigate the user further in your app workflow.
Orientation Change
In order to handle the orientation change in multi-window mode correctly, configure the activity in your AndroidManifest.xml
file as follows:
<activity
android:name=".MyActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" />
Face Auto Capture
The fragment with instructions for obtaining quality face images suitable for further processing. This component requires dot-face-detection-*
module. If you want to evaluate background uniformity during the face auto capture process, you will also need dot-face-background-uniformity
module. If you want to evaluate face mask during the face auto capture process, you will need dot-face-detection-balanced
module.
In order to configure the behaviour of FaceAutoCaptureFragment
, use FaceAutoCaptureFragment.Configuration
(see Fragment Configuration). For face verification scenarios, a convenient preset configuration simple
is available within FaceAutoCaptureFragment.Configuration.Presets
.
To use the fragment, create a subclass of FaceAutoCaptureFragment
and override appropriate callbacks.
Start the face auto capture process:
Check whether DOT Android Face is initialized. This step is important, because Android OS can terminate an application running in background in order to free resources and then it creates an instance of the top activity in the activity stack. At this point the DOT Android Face is no longer initialized and the face auto capture process must not be started.
If DOT Android Face is initialized, you can call the
start()
method immediately. If not, you need to initialize DOT Android Face and callstart()
in theDotFaceLibrary.InitializationListener
callback.
In case you want to handle detection data, implement onProcessed()
callback. This callback is called with each processed camera frame. When the face auto capture process finishes successfully, the result will be returned via the onCaptured()
callback.
In case you want to force the capture event, call the requestCapture()
method. The most recent image will be returned via the onCaptured()
callback asynchronously.
Call start()
method again in case you need to start over the face auto capture process. You can also call start()
method to stop and start over ongoing process as well.
In case you want to stop the face auto capture process prematurely, call the stopAsync()
method. The callback in the method argument indicates that the processing is over.
Once the face auto capture process has started, it is not safe to deinitialize the DOT Android Face until one of these callbacks is called:
onCaptured()
callback argument of
stopAsync()
method
Quality Attributes of the Output Image
You may adjust quality requirements for the output image. To perform this, you can use pre-defined instances - QualityAttributeThresholds
- from QualityAttributeThresholdPresets
with recommended thresholds and pass it to FaceAutoCaptureFragment.Configuration
by setting the qualityAttributeThresholds
. You can also create your own instance of QualityAttributeThresholds
from scratch or based on pre-defined instances according to your needs.
Possible ways how to create QualityAttributeThresholds
:
// The standard preset
val standard = QualityAttributeThresholdPresets.standard
// Modified thresholds based on the standard preset
val modified = QualityAttributeThresholdPresets.standard.copy(
minConfidence = minConfidence,
minSharpness = null,
)
// Custom thresholds
val custom = QualityAttributeThresholds(
minConfidence = minConfidence,
minSharpness = minSharpness,
)
Available presets (pre-defined instances with thresholds) in QualityAttributeThresholdPresets
:
standard
- The resulting image suitable for matching. See the thresholds.passiveLiveness
- The resulting image suitable for evaluation of the passive liveness. See the thresholds.icao
- The resulting image passing ICAO checks. See the thresholds.
Face Simple Capture (Deprecated)
The fragment for obtaining images for matching without considering any image quality requirements. This component requires dot-face-detection-*
module.
In order to configure the behaviour of FaceSimpleCaptureFragment
, use FaceSimpleCaptureFragment.Configuration
(see Fragment Configuration).
To use the fragment, create a subclass of FaceSimpleCaptureFragment
and override appropriate callbacks.
Start the face simple capture process:
Check whether DOT Android Face is initialized. This step is important, because Android OS can terminate an application running in background in order to free resources and then it creates an instance of the top activity in the activity stack. At this point the DOT Android Face is no longer initialized and the face simple capture process must not be started.
If DOT Android Face is initialized, you can call the
start()
method immediately. If not, you need to initialize DOT Android Face and callstart()
in theDotFaceLibrary.InitializationListener
callback.
You need to call requestCapture()
method in order to request a capture. The component will capture a face as soon as it is detected. The result will be returned via the onCaptured()
callback.
In case you want to stop the face simple capture process prematurely, call the stopAsync()
method. The callback in the method argument indicates that the processing is over.
Once the face simple capture process has started, it is not safe to deinitialize the DOT Android Face until one of these callbacks is called:
callback argument of
stopAsync()
method
Eye Gaze Liveness
The fragment with a moving or fading object on the screen. This component requires dot-face-eye-gaze-liveness
module.
In order to configure the behaviour of EyeGazeLivenessFragment
, use EyeGazeLivenessFragment.Configuration
(see Fragment Configuration).
To use the fragment, create a subclass of EyeGazeLivenessFragment
and override appropriate callbacks.
Start the eye gaze liveness process:
Check whether DOT Android Face is initialized. This step is important, because Android OS can terminate an application running in background in order to free resources and then it creates an instance of the top activity in the activity stack. At this point the DOT Android Face is no longer initialized and the eye gaze liveness process must not be started.
If DOT Android Face is initialized, you can call the
start()
method immediately. If not, you need to initialize DOT Android Face and callstart()
in theDotFaceLibrary.InitializationListener
callback.
The eye gaze liveness follows the corners
and renders an object in the specified corners of the screen.
For a better user experience, it is recommended to provide the user more attempts, so the size of corners
should be more than four items. However, this should be limited, as it is better to terminate the process if the user is failing in many corners. In case of on-device liveness evaluation the recommended way of corners generation is to use CornersGenerator
.
In case you want to handle detection data, implement onProcessed()
callback. This callback is called with each processed camera frame. The process is automatically finished as soon as there are four valid images in corner positions. After that, onFinished()
callback is called.
If the face can’t be detected anytime during the process or if the eyes can’t be detected in the first corner, the process will be terminated with the onCriticalFacePresenceLost()
callback.
The process fails with the onAllCornersUsed()
callback when all the corners
were displayed but it wasn’t possible to collect four valid images in corner positions.
In case you want to stop the Eye Gaze liveness process prematurely, call the stopAsync()
method. The callback in the method argument indicates that the processing is over.
Once the Eye Gaze liveness process has started, it is not safe to deinitialize the DOT Android Face until one of these callbacks is called:
onFinished()
onCriticalFacePresenceLost()
onAllCornersUsed()
callback argument of
stopAsync()
method
Server-side evaluation
If you want to perform a server side validation of the liveness check, please follow this recommended approach. The object movement is generated by DIS and then rendered on the device using corners
. When the process is finished successfully, the content
is transferred to DIS for evaluation.
Custom object on the screen
The moving or fading object on the screen is a drawable resource res/drawable/eye_gaze_liveness_object.xml
. It is a circle filled by ?attr/colorAccent
color. If you want to use a custom object, override this resource.
If the device is in power save mode, the object can change its position without an animated transition. This is because Android OS in Power Save mode can force all animations on the phone including Eye Gaze Liveness animations to be turned off. |
Smile Liveness
The fragment which performs the liveness check based on the changes in the face expression. This component requires dot-face-expression-neutral
module.
In order to configure the behaviour of SmileLivenessFragment
, use SmileLivenessFragment.Configuration
(see Fragment Configuration).
To use the fragment, create a subclass of SmileLivenessFragment
and override appropriate callbacks.
Start the smile liveness process:
Check whether DOT Android Face is initialized. This step is important, because Android OS can terminate an application running in background in order to free resources and then it creates an instance of the top activity in the activity stack. At this point the DOT Android Face is no longer initialized and the smile liveness process must not be started.
If DOT Android Face is initialized, you can call the
start()
method immediately. If not, you need to initialize DOT Android Face and callstart()
in theDotFaceLibrary.InitializationListener
callback.
In case you want to handle detection data, implement onProcessed()
callback. This callback is called with each processed camera frame.
The process is automatically finished when both the neutral and the smile face expression images are captured. After that, onFinished()
callback is called and the passive liveness and face matching can be evaluated.
If the face presence is lost after the neutral face expression image is captured, onCriticalFacePresenceLost()
callback is called. If the face presence between the neutral and the smile face expression images is required, call start()
method. Otherwise the callback can be ignored.
Call start()
method in order to start over the smile liveness process. You can also call start()
method to stop and start over ongoing process.
In case you want to stop the smile liveness process prematurely, call the stopAsync()
method. The callback in the method argument indicates that the processing is over.
Once the smile liveness process has started, it is not safe to deinitialize the DOT Android Face until one of these callbacks is called:
onFinished()
callback argument of
stopAsync()
method
MagnifEye Liveness
The fragment with instructions for obtaining face data suitable for MagnifEye liveness evaluation. This component requires dot-face-detection-*
module.
In order to configure the behaviour of MagnifEyeLivenessFragment
, use MagnifEyeLivenessFragment.Configuration
(see Fragment Configuration).
To use the fragment, create a subclass of MagnifEyeLivenessFragment
and override appropriate callbacks.
Start the MagnifEye liveness process:
Check whether DOT Android Face is initialized. This step is important, because Android OS can terminate an application running in background in order to free resources and then it creates an instance of the top activity in the activity stack. At this point the DOT Android Face is no longer initialized and the smile liveness process must not be started.
If DOT Android Face is initialized, you can call the
start()
method immediately. If not, you need to initialize DOT Android Face and callstart()
in theDotFaceLibrary.InitializationListener
callback.
In case you want to handle detection data, implement onProcessed()
callback. This callback is called with each processed camera frame. When the MagnifEye liveness process finishes successfully, the result will be returned via the onFinished()
callback.
In case you want to stop the MagnifEye liveness process prematurely, call the stopAsync()
method. The callback in the method argument indicates that the processing is over.
Once the MagnifEye liveness process has started, it is not safe to deinitialize the DOT Android Face until one of these callbacks is called:
onFinished()
callback argument of
stopAsync()
method
Customization of UI components
Strings
You can override the string resources in your application and provide alternative strings for supported languages using the standard Android localization mechanism.
<string name="dot_face_magnifeye_liveness_instruction_eye_centering">Fit your eye into square</string>
<string name="dot_face_eye_gaze_liveness_instruction_device_pitch_too_high">Hold your phone at eye level</string>
<string name="dot_face_eye_gaze_liveness_instruction_face_not_detected">Look straight</string>
<string name="dot_face_eye_gaze_liveness_instruction_size_too_large">Move back</string>
<string name="dot_face_eye_gaze_liveness_instruction_size_too_small">Move closer</string>
<string name="dot_face_eye_gaze_liveness_instruction_initial_state">Watch the object</string>
<string name="dot_face_eye_gaze_liveness_instruction_shadow_too_high">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_background_nonuniform">Plain background required</string>
<string name="dot_face_face_auto_capture_instruction_candidate_selection">Stay still…</string>
<string name="dot_face_face_auto_capture_instruction_device_pitch_too_high">Hold your phone at eye level</string>
<string name="dot_face_face_auto_capture_instruction_expression_neutral_too_high">Smile :)</string>
<string name="dot_face_face_auto_capture_instruction_expression_neutral_too_low">Keep neutral expression</string>
<string name="dot_face_face_auto_capture_instruction_eyes_too_closed">Open your eyes</string>
<string name="dot_face_face_auto_capture_instruction_face_out_of_bounds">Center your face</string>
<string name="dot_face_face_auto_capture_instruction_face_not_detected">Position your face into the circle</string>
<string name="dot_face_face_auto_capture_instruction_size_too_large">Move back</string>
<string name="dot_face_face_auto_capture_instruction_size_too_small">Move closer</string>
<string name="dot_face_face_auto_capture_instruction_glasses_present">Remove glasses</string>
<string name="dot_face_face_auto_capture_instruction_brightness_too_high">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_brightness_too_low">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_contrast_too_high">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_contrast_too_low">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_shadow_too_high">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_sharpness_too_low">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_unique_intensity_levels_too_low">Turn towards light</string>
<string name="dot_face_face_auto_capture_instruction_mask_present">Remove mask</string>
<string name="dot_face_face_auto_capture_instruction_mouth_too_open">Close your mouth</string>
<string name="dot_face_face_auto_capture_instruction_pitch_too_high">Lower your chin</string>
<string name="dot_face_face_auto_capture_instruction_pitch_too_low">Lift your chin</string>
<string name="dot_face_face_auto_capture_instruction_yaw_too_left">Look right</string>
<string name="dot_face_face_auto_capture_instruction_yaw_too_right">Look left</string>
Colors
You may customize the colors used by DOT Android Face in your application. To use custom colors, override the specific color.
<color name="dot_detection_layer">#ffffffff</color>
<color name="dot_instruction_background">#fff8fbfb</color>
<color name="dot_instruction_candidate_selection_background">#ff00bfb2</color>
<color name="dot_instruction_candidate_selection_text">#ff131313</color>
<color name="dot_instruction_text">#ff131313</color>
<color name="dot_placeholder">#ffffffff</color>
<color name="dot_placeholder_candidate_selection">#ff00bfb2</color>
<color name="dot_placeholder_overlay">#80131313</color>
Styles
You can style the text views and buttons by overriding the parent style in the application. The default style is AppCompat
.
<style name="TextAppearance.Dot.Medium" />
<style name="TextAppearance.Dot.Medium.Instruction" />
Security guidelines
Our video injection prevention feature relies heavily on following established security best practices as outlined in the Android Developer website’s Security guidelines. Specifically, the App Integrity and Networking sections provide crucial foundations for this functionality. The Play Integrity API ensures your app binary remains unaltered, preventing potential vulnerabilities that could be exploited for video injection. Networking Security guidelines help secure communication channels. These guidelines help prevent unauthorized modification of data streams. By adhering to these security principles, you create a robust environment where our video injection prevention features can function optimally, safeguarding you from tampered content.
OWASP Mobile Application Security
We also strongly recommend following the OWASP Mobile Application Security guidelines. The OWASP Mobile Application Security (MAS) flagship project provides a security standard for mobile apps (OWASP MASVS) and a comprehensive testing guide (OWASP MASTG) that covers the processes, techniques, and tools used during a mobile app security test, as well as an exhaustive set of test cases that enables testers to deliver consistent and complete results.
Appendix
Changelog
8.4.0 - 2024-09-11
Technical release. No changes.
8.3.3 - 2024-09-05
Technical release. No changes.
8.3.2 - 2024-09-05
Technical release. No changes.
8.3.1 - 2024-08-16
Fixed
Stability issue in UI components.
8.3.0 - 2024-08-08
Added
Property
EyeGazeLivenessFragment.Configuration.minValidSamplesCount
.
8.2.0 - 2024-07-30
Added
Enum
CaptureMode
.Property
FaceAutoCaptureFragment.Configuration.captureMode
.Property
FaceAutoCaptureFragment.Configuration.isPlaceholderVisible
.Object
FaceAutoCaptureFragment.Configuration.Presets
.Method argument
isFacePresenceRequired
to methodFaceAutoCaptureFragment.requestCapture()
.
Changed
Face Simple Capture UI component is deprecated.
8.1.0 - 2024-07-08
Technical release. No changes.
8.0.0 - 2024-06-27
Added
Class
FaceDetector.Face
.Class
FaceDetectionQuery
.Property
FaceAutoCaptureFragment.Configuration.query
.Property
FaceSimpleCaptureFragment.Configuration.query
.Property
MagnifEyeLivenessFragment.Configuration.query
.Property
SmileLivenessFragment.Configuration.query
.
Changed
Eye Gaze Liveness UI component reworked (including API change).
Method signature
FaceDetector.detect()
.Property
FaceAutoCaptureDetection.detectedFace
toFaceAutoCaptureDetection.face
.Property
FaceAutoCaptureDetection.position
toFaceAutoCaptureDetection.face.position
.Property
FaceAutoCaptureResult.detectedFace
toFaceAutoCaptureResult.face
.Property
FaceAutoCaptureFrameParameters.detectedFace
toFaceAutoCaptureFrameParameters.face
.Property
FaceAutoCaptureFrameParameters.detectionPosition
toFaceAutoCaptureFrameParameters.face.position
.Property
FaceSimpleCaptureResult.detectedFace
toFaceSimpleCaptureResult.face
.Property
MagnifEyeLivenessResult.detectedFace
toMagnifEyeLivenessResult.face
.Property
SmileLivenessResult.detectedFace
toSmileLivenessResult.face
.Property
FaceAutoCaptureFragment.Configuration.torchEnabled
toFaceAutoCaptureFragment.Configuration.isTorchEnabled
.Property
FaceSimpleCaptureFragment.Configuration.torchEnabled
toFaceSimpleCaptureFragment.Configuration.isTorchEnabled
.Property
MagnifEyeLivenessFragment.Configuration.torchEnabled
toMagnifEyeLivenessFragment.Configuration.isTorchEnabled
.Property
SmileLivenessFragment.Configuration.torchEnabled
toSmileLivenessFragment.Configuration.isTorchEnabled
.Property
FaceImage.image
toFaceImage.bgrRawImage
.Property
FaceImage.minFaceSizePixels
andFaceImage.maxFaceSizePixels
toFaceImage.faceSizeRatioInterval
.Property
FaceAspects.eyeDistance
to.eyeDistanceToImageShorterSideRatio
.Properties
ExpressionQuery.is*
toExpressionQuery.evaluate*
.Properties
EyesExpressionQuery.is*
toEyesExpressionQuery.evaluate*
.Properties
FaceImageQualityQuery.is*
toExpressionQuery.evaluate*
.Properties
HeadPoseQuery.is*
toHeadPoseQuery.evaluate*
.Properties
WearablesQuery.is*
toWearablesQuery.evaluate*
.String resources
dot_face_auto_capture_instruction_*
todot_face_face_auto_capture_instruction_*
.String resource
dot_face_auto_capture_instruction_face_centering
todot_face_face_auto_capture_instruction_face_out_of_bounds
.String resource
dot_face_auto_capture_instruction_face_not_present
todot_face_face_auto_capture_instruction_face_not_detected
.String resource
dot_face_auto_capture_instruction_face_too_close
todot_face_face_auto_capture_instruction_size_too_large
.String resource
dot_face_auto_capture_instruction_face_too_far
todot_face_face_auto_capture_instruction_size_too_small
.String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_brightness_too_high
(part).String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_brightness_too_low
(part).String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_contrast_too_high
(part).String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_contrast_too_low
(part).String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_shadow_too_high
(part).String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_sharpness_too_low
(part).String resource
dot_face_auto_capture_instruction_lighting
todot_face_face_auto_capture_instruction_unique_intensity_levels_too_low
(part).
Removed
Callback
FaceAutoCaptureFragment.onCandidateSelectionStarted()
.Interface
DetectedFace
. UseFaceDetector.Face
instead.Class
FaceImageFactory
. UseFaceImage
constructor instead.
7.5.8 - 2024-06-19
Fixed
Minor UI issue with updating the background color of the instruction.
Stability issue in UI components.
7.5.7 - 2024-06-04
Technical release. No changes.
7.5.6 - 2024-06-04
Technical release. No changes.
7.5.5 - 2024-05-30
Technical release. No changes.
7.5.4 - 2024-05-14
Added
Security guidelines section to the integration manual.
Fixed
Stability issue when
QualityAttributeThresholds.minEyesStatusScore
is used.
7.5.3 - 2024-04-26
Fixed
Minor issue.
7.5.2 - 2024-04-25
Removed
Permission
android.permission.INTERNET
from Android manifest.
7.5.1 - 2024-04-15
Added
Section about optimization of application size to the integration manual.
Fixed
Minor UI issue with positioning of instruction view.
Rare UI issue in detection layer in
FILL
scale type on some devices.
7.5.0 - 2024-04-03
Added
Class
FaceAutoCaptureController.Configuration
.Method
FaceAutoCaptureControllerFactory.create(FaceAutoCaptureController.Configuration)
.Class
FaceAutoCaptureFragment.Configuration
.Method
FaceAutoCaptureFragment.provideConfiguration()
.Constructor of
QualityAttributeThresholds
.Class
MagnifEyeLivenessFragment.Configuration
.Method
MagnifEyeLivenessFragment.provideConfiguration()
.Class
SmileLivenessFragment.Configuration
.Method
SmileLivenessFragment.provideConfiguration()
.Class
FaceSimpleCaptureFragment.Configuration
.Method
FaceSimpleCaptureFragment.provideConfiguration()
.Constructor of
ExpressionQuery
.Constructor of
EyesExpressionQuery
.Constructor of
FaceQualityQuery
.Constructor of
FaceImageQualityQuery
.Constructor of
HeadPoseQuery
.Constructor of
WearablesQuery
.Property
QualityAttributeThresholdPresets.icao
(originalQualityAttributeThresholdPresets.icao
property was renamed toQualityAttributeThresholdPresets.icaoBuilder
).Property
QualityAttributeThresholdPresets.standard
(originalQualityAttributeThresholdPresets.standard
property was renamed toQualityAttributeThresholdPresets.standardBuilder
).Property
QualityAttributeThresholdPresets.passiveLiveness
(originalQualityAttributeThresholdPresets.passiveLiveness
property was renamed toQualityAttributeThresholdPresets.passiveLivenessBuilder
).Callback
onStopped
as an argument to methodFaceAutoCaptureFragment.stopAsync()
.Callback
onStopped
as an argument to methodFaceSimpleCaptureFragment.stopAsync()
.Callback
onStopped
as an argument to methodMagnifEyeLivenessFragment.stopAsync()
.Callback
onStopped
as an argument to methodSmileLivenessFragment.stopAsync()
.
Changed
Property
QualityAttributeThresholdPresets.icao
toQualityAttributeThresholdPresets.icaoBuilder
.Property
QualityAttributeThresholdPresets.standard
toQualityAttributeThresholdPresets.standardBuilder
.Property
QualityAttributeThresholdPresets.passiveLiveness
toQualityAttributeThresholdPresets.passiveLivenessBuilder
.Deprecated
FaceAutoCaptureControllerConfiguration.Builder
, useFaceAutoCaptureController.Configuration
class instead.Deprecated
FaceAutoCaptureControllerConfiguration
, useFaceAutoCaptureController.Configuration
class instead.Deprecated
FaceAutoCaptureControllerFactory.create(FaceAutoCaptureControllerConfiguration)
, useFaceAutoCaptureControllerFactory.create(FaceAutoCaptureController.Configuration)
instead.Deprecated
FaceAutoCaptureConfiguration.Builder
, useFaceAutoCaptureFragment.Configuration
instead.Deprecated
FaceAutoCaptureConfiguration
, useFaceAutoCaptureFragment.Configuration
instead.Deprecated
FaceAutoCaptureFragment.CONFIGURATION
, overrideFaceAutoCaptureFragment.provideConfiguration()
method to provide configuration instead.Deprecated
QualityAttributeThresholds.Builder
, useQualityAttributeThresholds
constructor instead.Deprecated
QualityAttributeThresholdPresets.icaoBuilder
, useQualityAttributeThresholdPresets.icao
instead.Deprecated
QualityAttributeThresholdPresets.standardBuilder
, useQualityAttributeThresholdPresets.standard
instead.Deprecated
QualityAttributeThresholdPresets.passiveLivenessBuilder
, useQualityAttributeThresholdPresets.passiveLiveness
instead.Deprecated
MagnifEyeLivenessConfiguration.Builder
, useMagnifEyeLivenessFragment.Configuration
instead.Deprecated
MagnifEyeLivenessConfiguration
, useMagnifEyeLivenessFragment.Configuration
instead.Deprecated
MagnifEyeLivenessFragment.CONFIGURATION
, overrideMagnifEyeLivenessFragment.provideConfiguration()
method to provide configuration instead.Deprecated
SmileLivenessConfiguration.Builder
, useSmileLivenessFragment.Configuration
instead.Deprecated
SmileLivenessConfiguration
, useSmileLivenessFragment.Configuration
instead.Deprecated
SmileLivenessFragment.CONFIGURATION
, overrideSmileLivenessFragment.provideConfiguration()
method to provide configuration instead.Deprecated
FaceSimpleCaptureConfiguration.Builder
, useFaceSimpleCaptureFragment.Configuration
instead.Deprecated
FaceSimpleCaptureConfiguration
, useFaceSimpleCaptureFragment.Configuration
instead.Deprecated
FaceSimpleCaptureFragment.CONFIGURATION
, overrideFaceSimpleCaptureFragment.provideConfiguration()
method to provide configuration instead.Deprecated
ExpressionQuery.Builder
, useExpressionQuery
constructor instead.Deprecated
EyesExpressionQuery.Builder
, useEyesExpressionQuery
constructor instead.Deprecated
FaceQualityQuery.Builder
, useFaceQualityQuery
constructor instead.Deprecated
FaceImageQualityQuery.Builder
, useFaceImageQualityQuery
constructor instead.Deprecated
HeadPoseQuery.Builder
, useHeadPoseQuery
constructor instead.Deprecated
WearablesQuery.Builder
, useWearablesQuery
constructor instead.
Removed
Method
FaceAutoCaptureFragment.onStopped()
. UseFaceAutoCaptureFragment.stopAsync()
method argumentonStopped
instead.Method
FaceSimpleCaptureFragment.onStopped()
. UseFaceSimpleCaptureFragment.stopAsync()
method argumentonStopped
instead.Method
MagnifEyeLivenessFragment.onStopped()
. UseMagnifEyeLivenessFragment.stopAsync()
method argumentonStopped
instead.Method
SmileLivenessFragment.onStopped()
. UseSmileLivenessFragment.stopAsync()
method argumentonStopped
instead.
7.4.2 - 2024-04-02
Fixed
Proguard rules.
7.4.0 - 2024-03-18
Technical release. No changes.
7.3.0 - 2024-02-23
Added
Permission
android.permission.INTERNET
in Android manifest.
7.2.2 - 2024-02-07
Technical release. No changes.
7.2.1 - 2024-02-05
Added
Property
REQUIRE_SECURE_ENV
with value1
under the<application>
in Android manifest.Constructor overloads of
DotFaceLibraryConfiguration
data class.
7.2.0 - 2023-12-28
Changed
Camera preview and image analysis resolution selection strategy in UI components for
FILL
scale type.
7.1.0 - 2023-12-14
Technical release. No changes.
7.0.2 - 2023-12-05
Fixed
API availability issue.
7.0.1 - 2023-11-21
Technical release. No changes.
7.0.0 - 2023-11-02
Added
Class
DotSdk
.Class
DotSdkConfiguration
.Interface
DotLibrary
.
Changed
Class
DotFaceLibrary
reworked. Initialization API is moved toDotSdk
(see the migration guide to version 7.0.0).Class
DotFaceLibraryConfiguration
reworked.
6.5.2 - 2023-10-20
Technical release. No changes.
6.5.1 - 2023-10-19
Fixed
Minor UI issue in MagnifEye Liveness UI component.
Stability issue.
6.5.0 - 2023-10-04
Technical release. No changes.
6.4.0 - 2023-09-20
Added
Class
TiltAngles
.String resource
dot_face_auto_capture_instruction_device_pitch_too_high
.Property
FaceAutoCaptureDetection.deviceTiltAngles
.Method
QualityAttributeThresholds.Builder.maxDevicePitchAngle()
.
Fixed
Stability issue in Face Simple Capture UI component.
Minor UI issue in Face Simple Capture UI component.
6.3.1 - 2023-08-21
Fixed
Stability issue.
6.3.0 - 2023-08-17
Changed
New license file format with feature licensing is required. To obtain one, please contact
support@innovatrics.com
.Update
MagnifEyeLivenessResult.content
.
Fixed
UI state after configuration change.
Preview and image resolution in UI components on some devices.
6.2.1 - 2023-07-27
Technical release. No changes.
6.2.0 - 2023-07-26
Added
Method
FaceAutoCaptureConfiguration.Builder.sessionToken()
.Method
FaceSimpleCaptureConfiguration.Builder.sessionToken()
.Method
MagnifEyeLivenessConfiguration.Builder.sessionToken()
.Method
SmileLivenessConfiguration.Builder.sessionToken()
.Property
SmileLivenessResult.smileExpressionBgrRawImage
.
6.1.0 - 2023-07-07
Added
Method
FaceAutoCaptureConfiguration.Builder.torchEnabled()
.Method
FaceSimpleCaptureConfiguration.Builder.torchEnabled()
.Method
MagnifEyeLivenessConfiguration.Builder.torchEnabled()
.Method
SmileLivenessConfiguration.Builder.torchEnabled()
.
Fixed
MagnifEye Liveness UI components after restart.
Duplicate classes from
com.google.protobuf
package.
6.0.0 - 2023-06-14
Added
Method
SmileLivenessConfiguration.Builder.faceSizeRatioInterval()
.Method
MagnifEyeLivenessConfiguration.Builder.faceSizeRatioInterval()
.Property
SmileLivenessResult.bgrRawImage
.Property
SmileLivenessResult.content
.Property
MagnifEyeLivenessResult.detectedFace
.
Changed
Face Auto Capture UI component reworked (including API change).
Face Simple Capture UI component reworked (including API change).
Property
SmileLivenessResult.neutralExpressionFace
renamed toSmileLivenessResult.detectedFace
.Definition of property
DetectionPosition.sizeToImageShorterSideRatio
now fits Face Size definition.
Removed
Method
SmileLivenessFragment.restart()
. UseSmileLivenessFragment.start()
instead.Method
SmileLivenessConfiguration.Builder.minFaceSizeRatio()
. UseSmileLivenessConfiguration.Builder.faceSizeRatioInterval()
instead.Method
SmileLivenessConfiguration.Builder.maxFaceSizeRatio()
. UseSmileLivenessConfiguration.Builder.faceSizeRatioInterval()
instead.Method
MagnifEyeLivenessConfiguration.Builder.minFaceSizeRatio()
. UseMagnifEyeLivenessConfiguration.Builder.faceSizeRatioInterval()
instead.Method
MagnifEyeLivenessConfiguration.Builder.maxFaceSizeRatio()
. UseMagnifEyeLivenessConfiguration.Builder.faceSizeRatioInterval()
instead.Property
SmileLivenessResult.smileExpressionFace
.
5.5.1 - 2023-06-06
Fixed
UI state after components are finished.
5.5.0 - 2023-04-26
Technical release. No changes.
5.4.2 - 2023-04-04
Fixed
Stability issue.
5.4.1 - 2023-03-28
Fixed
Loss of detection in MagnifEye Liveness UI component.
5.4.0 - 2023-03-24
Added
MagnifEye Liveness UI component (
MagnifEyeLivenessFragment
,MagnifEyeLivenessConfiguration
andMagnifEyeLivenessResult
).String resource
dot_face_magnifeye_liveness_instruction_eye_centering
.
5.2.0 - 2023-03-07
Technical release. No changes.
5.1.0 - 2023-02-06
Changed
Update IFace to 5.0.3.
Minimum Kotlin Gradle plugin version to 1.6.0.
5.0.0 - 2023-01-30
Changed
New SDK versioning: All libraries (DOT Document, DOT Face, DOT Face Lite and DOT NFC) are released simultaneously with a single version name. Libraries with the same version name work correctly at build time and at run time.
String resource
dot_face_auto_capture_instruction_face_not_present
.Minimum Kotlin Gradle plugin version to 1.7.0.
Removed
Deprecated API.
4.11.0 - 2022-12-15
Changed
Update IFace to 4.21.0 - improved passive liveness algorithm.
4.10.4 - 2022-11-02
Fixed
Compatibility with latest DOT libraries.
4.10.3 - 2022-10-18
Changed
Consumer proguard rules are removed from documentation and introduced in
consumer-rules.pro
. There is no need to copy-paste the rules in consumer application anymore.Target Android API level to 33.
Fixed
Compatibility with latest DOT libraries.
4.10.2 - 2022-08-18
Fixed
Minor UI issues in Smile Liveness UI component.
4.10.1 - 2022-08-03
Fixed
ProGuard rules to be compatible with DexGuard.
4.10.0 - 2022-07-28
Changed
Update IFace to 4.18.2 - improved passive liveness algorithm.
x86
architecture is not supported temporarily since this version (known issue).
4.9.0 - 2022-07-06
Added
DotFaceLibrary
to replaceDotFace
.DotFaceLibraryConfiguration
to replaceDotFaceConfiguration
.Method
FaceAutoCaptureFragment.restart()
.
Changed
Deprecated
DotFace
, useDotFaceLibrary
instead.Deprecated
DotFaceConfiguration
, useDotFaceLibraryConfiguration
instead.Update CameraX to 1.1.0.
Minimum Kotlin Gradle plugin version to 1.6.0.
Fixed
Minor design issue in the Smile Liveness component.
4.8.2 - 2022-05-27
Fixed
Rare issue in Eye Gaze Liveness UI component.
4.8.1 - 2022-05-18
Removed
Color resource
dot_eye_gaze_liveness_instruction_text
.Color resource
dot_eye_gaze_liveness_instruction_text_background
.
Fixed
Design issues in UI components.
4.8.0 - 2022-05-09
Added
Smile Liveness UI component (
SmileLivenessFragment
,SmileLivenessConfiguration
andSmileLivenessResult
).New module
dot-face-expression-neutral
with classDotFaceExpressionNeutralModule
. This module is required if the face expression quality attribute is evaluated and for Smile Liveness component.String resource
dot_face_auto_capture_instruction_face_not_present
.String resource
dot_face_auto_capture_instruction_expression_neutral_too_high
.String resource
dot_face_auto_capture_instruction_expression_neutral_too_low
.Color resource
dot_detection_layer
.Color resource
dot_instruction_background
.Color resource
dot_instruction_text
.Color resource
dot_placeholder
.Color resource
dot_placeholder_overlay
.Style resource
TextAppearance.Dot.Medium.Instruction
.
Changed
Target Android API level to 32.
Design of Face Auto Capture UI component.
Removed
Color resource
dot_face_auto_capture_progress_valid
.Color resource
dot_face_auto_capture_progress_intermediate
.Color resource
dot_face_auto_capture_progress_invalid
.Color resource
dot_face_auto_capture_tracking_circle_background
.
4.7.0 - 2022-03-22
Added
Method
FaceAutoCaptureFragment.start()
.Method
FaceAutoCaptureFragment.stopAsync()
.Callback
FaceAutoCaptureFragment.onStopped()
.Method
FaceSimpleCaptureFragment.start()
.Method
FaceSimpleCaptureFragment.stopAsync()
.Callback
FaceSimpleCaptureFragment.onStopped()
.Method
EyeGazeLivenessFragment.stopAsync()
.Callback
EyeGazeLivenessFragment.onStopped()
.
Changed
FaceAutoCaptureFragment
is no longer started implicitly and has to be started explicitly bystart()
method.FaceSimpleCaptureFragment
is no longer started implicitly and has to be started explicitly bystart()
method.Update sharpness range in
DefaultQualityAttributeRegistry
.
Fixed
Stability issue in Eye Gaze Liveness component.
4.6.0 - 2022-03-09
Changed
DotFaceConfiguration.faceDetectionConfidenceThreshold
default value to0.06
.
Fixed
Camera preview resolution selection.
4.5.0 - 2022-02-17
Changed
Mouth status range in
DefaultQualityAttributeRegistry
.
Fixed
Bind the camera to the fragment lifecycle instead of the activity in UI components.
4.3.1 - 2022-01-05
Fixed
An initialization stability issue.
4.3.0 - 2021-12-16
Changed
Update IFace to 4.14.0 - minor improvements.
4.2.0 - 2021-11-24
Added
New module
dot-face-background-uniformity
with classDotFaceBackgroundUniformityModule
. This module is required only if the background uniformity quality attribute is evaluated.New module
dot-face-detection-balanced
with classDotFaceDetectionBalancedModule
.Enum value
QualityAttributeId.MASK
(requiresdot-face-detection-balanced
module).Class
FaceImageFactory
. This is a replacement forFaceImage.of()
factory method.
Changed
Target Android API level to 31.
Rename module
dot-face-detection
todot-face-detection-fast
.Creation of
FaceImage
instance fails ifminFaceSizeRatio
is not valid.
4.1.0 - 2021-10-14
Changed
Update IFace to 4.13.0 - improved passive liveness algorithm.
DotFaceConfiguration.faceDetectionConfidenceThreshold
default value to0.1
.Update sharpness range in
DefaultQualityAttributeRegistry
,IcaoQualityProvider
,MatchingQualityProvider
andPassiveLivenessQualityProvider
.
4.0.1 - 2021-10-06
Fixed
Face detection after
onCaptured()
callback in Face Simple Capture component.Minor issues.
4.0.0 - 2021-09-28
Added
Class
BgrRawImage
.Class
BgrRawImageFactory
.Class
BitmapFactory
.Class
DotFaceDetectionModule
.Class
DotFaceVerificationModule
.Class
DotFacePassiveLivenessModule
.Class
DotFaceEyeGazeLivenessModule
.Class
FaceDetectorFactory
.Class
RandomSegmentsGenerator
.Interface
SegmentsGenerator
.Class
Template
.Class
Expression
.Class
ExpressionQuery
.Class
EyesExpression
.Class
EyesExpressionQuery
.Class
FaceAspects
.Class
FaceAttribute
.Class
FaceImageQuality
.Class
FaceImageQualityQuery
.Class
FaceQuality
.Class
FaceQualityQuery
.Class
Glasses
.Class
HeadPose
.Class
HeadPoseQuery
.Class
HeadPoseAttribute
.Class
Wearables
.Class
WearablesQuery
.Class
FaceMatcherFactory
.Class
TemplateMatcherFactory
.
Changed
groupId
com.innovatrics.android
tocom.innovatrics.dot
.Minimum Android API level to 21.
DOT Android Face is split into multiple android libraries. See sections Distribution and Initialization in the integration manual.
Class
DotFaceParameters
toDotFaceConfiguration
.Method
DotFace.initAsync()
toDotFace.initializeAsync()
.Method
DotFace.closeAsync()
toDotFace.deinitializeAsync()
.Component "Face Capture" to "Face Auto Capture" and all related API.
Component "Face Capture Simple" to "Face Simple Capture" and all related API.
Component "Liveness Check" to "Eye Gaze Liveness" and all related API.
Class
QualityAttributeConfiguration
toQualityAttribute
.Class
ComplianceRange
toValueRange
.Class
DefaultQualityRegistry
toDefaultQualityAttributeRegistry
.Class
VerificationQualityProvider
toMatchingQualityProvider
.Class
DetectedFace
to a new interfaceDetectedFace
.Class
FaceDetector
to a new interfaceFaceDetector
.Class
FaceImage
containsBgrRawImage
instead ofBitmap
.Class
SegmentConfiguration
toSegment
.Class
SegmentPhoto
toSegmentImage
.Enum
DotPosition
toCorner
.Class
FaceImageVerifier
to a new interfaceFaceMatcher
.Class
TemplateVerifier
to a new interfaceTemplateMatcher
.Renamed resource identifiers to match new component names.
Face confidence, matching score, face attributes and attribute quality value ranges are in interval [0.0, 1.0].
Removed
Component "Liveness Check 2" and all related API.
Class
FaceAttribute
.Class
IcaoAttribute
.Enum
IcaoAttributeId
.Class
LicenseUtils
.
3.8.0 - 2021-06-17
Changed
Update IFace to 4.10.0 - improved background uniformity algorithm.
Fixed
Requesting camera permission if it is already denied.
3.7.1 - 2021-05-10
Fixed
Update IFace to 4.9.1 - minor issue.
Update glass status range in
DefaultQualityRegistry
.
3.7.0 - 2021-05-03
Changed
Update IFace to 4.9.0 - improved glass status evaluation.
3.6.0 - 2021-04-12
Changed
Update IFace to 4.8.0 - improved passive liveness algorithm.
3.5.0 - 2021-03-17
Added
DotFaceParameters
DTO.DotFace.InitializationException
exception.
Changed
Update IFace to 4.4.0 - face templates are incompatible and must be regenerated.
Signature of
DotFace.initAsync()
method.Signature of
DotFace.closeAsync()
method.DotFace.Listener
toDotFace.InitializationListener
andDotFace.CloseListener
.Ranges of
DefaultQualityRegistry
.CaptureStepId.PITCH
toCaptureStepId.PITCH_ANGLE
.CaptureStepId.YAW
toCaptureStepId.YAW_ANGLE
.IcaoAttributeId.PITCH
toIcaoAttributeId.PITCH_ANGLE
.IcaoAttributeId.ROLL
toIcaoAttributeId.ROLL_ANGLE
.IcaoAttributeId.YAW
toIcaoAttributeId.YAW_ANGLE
.QualityAttributeId.PITCH
toQualityAttributeId.PITCH_ANGLE
.QualityAttributeId.YAW
toQualityAttributeId.YAW_ANGLE
.
Fixed
DotFace.initAsync()
behavior when DOT Android Face is already initialized.DotFace.closeAsync()
behavior when DOT Android Face is not initialized.
3.4.0 - 2021-02-01
Changed
Update target Android SDK version to 30 (Android 11).
FaceCaptureArguments
: changecameraFacing
tocameraId
.FaceCaptureSimpleArguments
: changecameraFacing
tocameraId
.LivenessCheckArguments
: changecameraFacing
tocameraId
.LivenessCheck2Arguments
: changecameraFacing
tocameraId
.
3.3.1 - 2020-09-23
Fixed
Animations not working in rare cases for active liveness.
3.3.0 - 2020-09-04
Changed
Adjusted default ranges for quality providers.
Update IFace to 3.13.1 - face templates are incompatible and must be regenerated.
Background uniformity calculation improved and added to
IcaoQualityProvider
.
3.2.2 - 2020-08-04
Fixed
QualityProvider
andQualityAttributeId
added to public API.
3.2.1 - 2020-07-31
Added
Add stay still instruction color configuration.
Fixed
Stay still indicator not colored during capture.
3.2.0 - 2020-07-30
Changed
On screen messages during face capture remain shown longer to minimize instruction flickering.
Changed ranges of
DefaultQualityRegistry
and made it public.Removed detected face indicator in
FaceCaptureFragment
during animation ifshowCheckAnimation
is set.
Fixed
Fix camera preview freezing.
3.1.1 - 2020-07-13
Added
New
FaceAttributes
section to documentation.On device passive liveness evaluation provided by
FaceAttributes
. Artifactdot-face-passive-liveness
must be used for this functionality.QualityProvider
implementations -VerificationQualityProvider
,PassiveLivenessQualityProvider
,IcaoQualityProvider
which can be used byFaceCaptureFragment
.New
CaptureStepId
events available forFaceCaptureFragment
-PITCH
,YAW
,EYE_STATUS
,GLASS_STATUS
andMOUTH_STATUS
. These events are added by specificQualityProvider
and instructions for these steps can be customized, see documentation for details.
Changed
Removed alternative instructions for
FaceCaptureFragment
.
Fixed
Crash in Liveness Check when track is called without init.
Crash during premature finish of Liveness Check 2.
Bug which caused that liveness check could not be completed when animations are disabled.
Rare crash during face capture.
3.0.0 - 2020-06-02
Changed
New major release: DOT Android Kit becomes DOT Android Face - library focused on facial recognition.
Update IFace to 3.10.1 - face templates are incompatible and must be regenerated.
Removed
onCaptureFail()
inFaceCaptureFragment
andonFaceCaptureFail()
inLivenessCheck2Fragment
. Need for these callbacks was eliminated by internal rework.Calculate min and max face size ratio from width of the image in
FaceDetector
. Keep calculation from shorter side (height) in landscape mode for UI components.
Fixed
Rare dot tracking liveness check sudden change of dot direction.
Crash during premature finish of Liveness Check 2.