The Captus SDK is a set of screens to capture the front and back images of ID documents. It also allows the user to manually verify that the documents are clean and clear. This SDK is useful for IDs that cannot be processed on the mobile and needs server-side processing.
You can find the latest version and release history Here
- Prerequisite
- Android SDK Requirements
- Download
- Setup
- Quick Start
- Captus Result
- Captus Error Codes
- Captus Parameters
- Help
NOTE : Encryption of CAPTUS SDK Result is under development
You will need a valid license to use the Captus SDK, which can be obtained by contacting support@frslabs.com .
Once you have the license , follow the below instructions for a successful integration of Captus SDK onto your Android Application.
Minimum SDK Version - 21 or higher
Add the following code to your project level build.gradle file
allprojects { repositories { maven { // Maven Url and Credentials for Captus SDK.
url "https://captus-android.repo.frslabs.space/" credentials { username 'repo-username' password 'repo-password' }
}
}
}After that, add the following code to your app level build.gradle file
// ...
defaultConfig { // ...
ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } vectorDrawables.useSupportLibrary true }
// ...And then, add the dependencies
// ...
dependencies {
/* Dependencies for Captus SDK */ implementation 'com.android.support:design:<version above 23.4.0>' implementation 'com.android.support.constraint:constraint-layout:<version above 1.1.3>'
implementation 'com.frslabs.android.sdk:captus:1.0.7' }Captus requires the camera permission to work properly
<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="your.package.name" >
<!-- Required by Captus -->
<uses-permissionandroid:name="android.permission.CAMERA" />
<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
...
</application>
</manifest>Initialize the Captus instance with the appropriate configurations to invoke the Captus Sdk
publicclassMainActivityextendsAppCompatActivityimplementsCaptusResultCallback {
// .../* Enter the Captus license key here */privateStringCAPTUS_LICENSE_KEY = "ENTER_YOUR_LICENSE_KEY_HERE";
/* (OPTIONAL) Enter the Captus api credentials here */privateStringCAPTUS_API_BASE_URL = "ENTER_BASE_URL_HERE"
, CAPTUS_API_REFERENCE_ID = "ENTER_REF_ID_HERE"
, CAPTUS_API_CRED1 = "ENTER_API_CRED1_HERE"
, CAPTUS_API_CRED2 = "ENTER_API_CRED2_HERE";
/* (OPTIONAL) Enter the Captus encryption key here */privateStringCAPTUS_ENCRYPTION_KEY = "ENTER_ENCRYPTION_KEY_HERE";
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButtoncallSdk = findViewById(R.id.call_sdk);
callSdk.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewview) {
/* Invoke the Captus Sdk */callCaptusSdk();
}
});
}
publicvoidcallCaptusSdk() {
//Initialize the Captus Sdk Config object with the appropriate configurationsCaptusConfigcaptusConfig = newCaptusConfig.Builder()
.setLicenseKey(CAPTUS_LICENSE_KEY)
.setDocumentSide(CaptusUtility.Side.TWO)
.setCropboxOrientation(CaptusUtility.CropboxOrientation.HORIZONTAL)
.setCaptusSDK(true)
//.setEncryptionKey(CAPTUS_ENCRYPTION_KEY) // Optional
.setApiCredentials(newCaptusApiCredentials(CAPTUS_API_BASE_URL
,CAPTUS_API_REFERENCE_ID
,CAPTUS_API_CRED1
,CAPTUS_API_CRED2)) // Optional
.build();
//Call the Captus Sdk Captuscaptus = newCaptus(captusConfig);
captus.start(this, this);
}
// ...
}Your activity must implement CaptusResultCallback to receive the result.
// ...@OverridepublicvoidonCaptusSuccess(CaptusResultcaptusResult) {
if (captusResult != null) {
String[] imagePaths = captusResult.getImagePaths();
String[] imageReferenceIds = captusResult.getImageReferenceIds();
if(captusResult.getAmlCheckStatus().equals(Utility.AML_CHECK_PASS)){
//Handle logic on AML Check Pass
}else{
//Handle logic on AML Check Fail
}
}
}
@OverridepublicvoidonCaptusFailure(interrorCode) {
/* Handle the Captus Sdk failure result here */Log.d(TAG, "onCaptusFailure: Error: " + errorCode);
}
// ...You can use the following methods in the CaptusResult instance to parse the result:
| Return Type | Method | Usage |
|---|---|---|
| String[] | getImagePaths() | Array of JPEG File Path of captured images |
| String[] | getImageReferenceIds() | Array of reference ID corresponding to each image |
| String | getAmlCheckStatus() | Result of the AML Check. Values are Utility.AML_CHECK_PASS Utility.AML_CHECK_FAIL |
Following error codes will be returned on the onCaptusFailure method of the callback
| CODE | DESCRIPTION |
|---|---|
| 803 | Camera permission denied |
| 804 | Capture interrupted |
| 805 | Captus SDK License has expired |
| 806 | Captus SDK License is invalid |
| 808 | Transaction failed / Unable to ping |
| 901 | Network error |
| 902 | Image upload failed |
| 1001 | Error parsing result |
setLicenseKey(String captusLicenseKey)(Required)Accepts the Captus SDK licence key as a
StringsetDocumentSide(Utility.Side documentSide)(Optional)(Defaults to CaptusUtility.Side.TWO)Sets the number of document sides to be captured
Value Effect CaptusUtility.Side.ONE Scans only the Front (Primary) side of the document CaptusUtility.Side.TWO Scans both Front and back side of the document setEncryptionKey(String captusEncryptionKey)(Optional)Sets the Captus SDK encrpytion key as a
String. If set, the output images will be encrypted. Obtain the appropriate encryption key through a REST API call , for details about the REST API, contactsupport@frslabs.comsetCropboxOrientation(CaptusUtility.CropboxOrientation cropboxOrientation)(Optional)(Defaults to CaptusUtility.CropboxOrientation.HORIZONTAL)Sets the Captus SDK image capture orientation
Value Effect CaptusUtility.CropboxOrientation.HORIZONTAL Captures the image with a landscape crop CaptusUtility.CropboxOrientation.VERTICAL Captures the image with a portrait crop setCaptusSDK(boolean value)(Required)Sets the Captus SDK capture mode.
Value Effect true (Recommended) Captures the image(s) and returns the result false Special case - Captures the image , OCR's the arabic text and returns the result along with the AML check status setApiCredentials(CaptusApiCredentials captusApiCredentials)(Optional)Sets the Captus SDK apiCredentials . Obtain the appropriate api credentials through a REST API call , for details about the REST API, contact
support@frslabs.com
For any queries/feedback , contact us at support@frslabs.com