Change the dependency version number to3.6.4:
dependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.6.4'}Change the dependency version number to3.6.3:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.6.3'}Change the dependency version number to3.6.2:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.6.2'}Change the dependency version number to3.6.1:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.6.1'}Change the dependency version number to3.6.0:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.6.0'}Set SignatureId (optional feature; if this id is not set or is set to empty, the livenessId method will remain unchanged)
In the following known situations, the livenessId generated by AAI may not be transmitted to your server, resulting in the loss of these livenessId outcomes. To address this issue, your backend can call the AAI interface to generate a SignatureId and pass it to the SDK. The SignatureId can be used to obtain the liveness score and has equivalent functionality to the livenessId.
xxxxxxxxxx1. During the upload of the liveness image, the user clicks the back button and leaves the page.2. After successful liveness, the app encounters an unexpected issue (such as a network error or app crash) and fails to transmit the livenessId to the server.
Please note: SignatureId can be empty but must not be reused
xxxxxxxxxxGuardianLivenessDetectionSDK.setSignatureId(signatureId);
Change the dependency version number to3.5.1:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.5.1'}Change the dependency version number to3.5.0:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.5.0'}
Change the dependency version number to3.4.1:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.4.1'}targetSdk upgraded to 34.Change the dependency version number to3.4.0:
xxxxxxxxxxdependencies { ... implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.4.0'}Change the dependency version number to3.3.1:
xxxxxxxxxxdependencies { ... // version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.3.1'}Fixed warnings from some detection platforms on VirusTotal.
The Liveness SDK is falsely reported as containing viruses by some platforms on VirusTotal . If your app promotion relies on VirusTotal 's detection results, it is recommended that you upgrade to this version
aai.liveness.**LivenessViewthe name of , when integrating 3.3.0, please revert the name of this class toLivenessViewThe performance of the livenesss collection process has been optimized, and the user pass rate has been significantly improved.
UI interaction adjustments
Currently, the ellipses in the entire 3D liveness detection process are the same color. We have adjusted the status during detection, maintaining green in the stationary state and gray in other states.
If you want to maintain the previous interaction effect, you can call the following methods to set the ellipse color in these two states:
xxxxxxxxxxmLivenessView.setOvalColor(Color.parseColor("#5BC413"));mLivenessView.setOvalNormalColor(Color.parseColor("#5BC413"));Supports capturing an audit graph at a specified time
xxxxxxxxxx// Added setRelativeSecondsCaptureAfterCameraLaunched(2.3f) configuration to the original audit image configuration. You can specify the screenshot time relative to the camera opening, in seconds. If this setting is not called, the image will not be captured.// The newly added image exists in the original image arrayGuardianLivenessDetectionSDK.setAuditImageConfig(new AuditImageConfig .AuditImageConfigBuilder() .setEnableCollectSwitch(true) .setImageCaptureInterval(400) .setImageMaxNumber(10) .setImageWidth(400) .setImageQuality(30) .setRelativeSecondsCaptureAfterCameraLaunched(2.3f) .build());Added uploading timestamps for near and far view images
Starting from version 3.3.0, when you call the backend score interface,
farImageTimeandnearImageTimewill be returned additionally, representing the timestamp for the capture of the far and near images respectively.
Change the dependency version number to3.3.0:
xxxxxxxxxxdependencies { ... // version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml implementation 'ai.advance.mobile-sdk.android:liveness-detection:3.3.0'}Change the dependency version number to3.2.0:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.2.0'}
Change the dependency version number to3.1.5:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.1.5'}
Change the dependency version number to3.1.4:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.1.4'}
Add functionality to return an audit image list.
Video recording feature optimization:
Change the dependency version number to3.1.1:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.1.1'}
Capture audit images.
When this feature is enabled, we will capture multiple images during the user's movement based on your configuration.
xxxxxxxxxxGuardianLivenessDetectionSDK.setAuditImageConfig(new AuditImageConfig.AuditImageConfigBuilder().setEnableCollectSwitch(true)// The function open switch,default value is false.setImageCaptureInterval(400)// Minimum interval time for capturing images,default interval is 400ms.setImageMaxNumber(10)// Maximum number of captured images,default number is 10.setImageWidth(400)// The image width,default width is 400px.setImageQuality(30)// The image compress quality,must in [30,100],the default value is 30.build());
Get audit images
xxxxxxxxxxList<LivenessImageData> auditImageList = LivenessResult.getAuditImageList();// data structurepublic class LivenessImageData {public final String base64Image;// Base64 format imagepublic final long timestamp;// Timestamp of image capture.}
Video recording feature.
By enabling this feature, the SDK will activate video recording. After the completion of the liveness process, you can retrieve the video file using SDK methods. The video file format is .mp4. Please note that this video can only be obtained through the SDK and cannot be obtained from the backend. After using the video, it is up to you to decide whether to delete the local file.
xxxxxxxxxxGuardianLivenessDetectionSDK.setRecordVideoSwitch(true);GuardianLivenessDetectionSDK.setMaxRecordVideoSeconds(60);// Maximum recording duration, in seconds, valid range [2,60], default is 60 seconds.
Get video file
xxxxxxxxxxFile videoFile = LivenessResult.getVideoFile(this);
eventId to troubleshoot logsChange the dependency version number to3.1.0:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.1.0'}
Add eventIdto track the whole liveness detection process and debug,Please make sure to save this ID for contacting us for troubleshooting purposes
xxxxxxxxxx// After the liveness process is completed, we store this ID regardless of success or failure.String eventId = LivenessResult.getEventId();
Fllow this link
Change the dependency version number to 3.0.6:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.0.6'}
When the server requests the auth-license API, an additional parameter called "openCertPinning" is included. Here is an example:
xxxxxxxxxx{"licenseEffectiveSeconds":600,"applicationId":"appId1,appId2","openCertPinning":true}
Delete the GuardianLivenessDetectionSDK.capturePictureQueue() method, no longer supporting the return of image sequences.
Delete the static method IMediaPlayer.isPlayEnable() and use mLivenessView.isSoundPlayEnable() instead.
Add a method to return the near Image
xxxxxxxxxxBitmap nearBitmap = LivenessResult.getNearBitmap();String nearBase64Str = LivenessResult.getNearBase64Str();
Change the dependency version number to3.0.5:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.0.5'}
Change the dependency version number to3.0.4:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.0.4'}
Change the dependency version number to3.0.3:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.0.3'}
Change the dependency version number to3.0.2:
xxxxxxxxxxdependencies {...// version log:https://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:3.0.2'}
SDK adds the following optional permissions. If you do not want these permissions to appear in your app manifest, remove the permission item in your app module's AndroidManifest.xml file. Taking ACCESS_FINE_LOCATION as an example: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/>.
xxxxxxxxxx<uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
It is recommended to place the prompt text at the position shown in the image below (above the LivenessView) for easy user access to the prompt content:

It is recommended to shorten the prompt text length as follows for easy user comprehension of the prompt information:
FACENOTCENTER:Center your face in the frameFACENOTSTILL&FACECAPTURE:Hold steadyFACENOTFRONTAL:Please look straightFACEMISSING:Position your face in the frameFACESMALL:Move closerFACELARGE:Move awaySet the background color of the livenessView(do not overlay a mask image on the LivenessView, if you have, please remove it)
xxxxxxxxxxmLivenessView.setMaskColor(getResources().getColor(R.color.xxx);
Set the color of the oval frame in the livenessView:
xxxxxxxxxxmLivenessView.setOvalColor(getResources().getColor(R.color.xxx));