Skip to main content

Native integration

To import our SDKs, it is necessary to make changes to the Project and Application build.gradle.

Adding to Project

Add our maven repository address to the project's build.gradle (in Android Studio this file appears as: "Project: {project_name}"), as shown in the example below.

buildscript {
...
}

allprojects {
repositories {
...
maven { url 'https://sdks.zaig.com.br/' }
}
}

Adding to Application

After that, add the library you want to import to your app's build.gradle (in Android Studio this file appears as: "Module: {project_name}.app"), including the dependency shown below.

android {
...
packagingOptions {
pickFirst '**/*.so'
}
...
splits {
abi {
enable true
universalApk true
reset()
include 'armeabi-v7a', 'x86', 'x86_64', 'arm64-v8a'
}
}
}
...
dependencies {
...
implementation 'com.zaig.android:documentrecognition:v3.1.3'
}
warning

Since April 2025, new Google Play policies require Android API Level 35 for applications to be published or updated on the Google Play Store. Therefore we strongly recommend using targetSdkVersion version 35 at least.

info

Using targetSdkVersion 35 implies using compileSdkVersion 35, which triggers some minimum requirements for tools in the Android ecosystem:

  • compileSdkVersion 35 --> AGP 8.6.0
  • AGP 8.6.0 --> Gradle 8.7
  • AGP 8.6.0 --> Java 17 (JDK 17)
  • AGP 8.6.0 --> Kotlin 2+

Starting the SDK

To incorporate the SDK into your application, you must configure your custom capture application through a Builder component and submit it as a parameter via Intent Extra to DocumentRecognitionActivity.

  Intent intent = new Intent(context, DocumentRecognitionActivity.class);

VisualConfiguration visualConfiguration = new VisualConfiguration()
.setOnboardingDrawable(R.drawable.introscreen,500)
.setDocumentFrontDrawable(R.drawable.documentfront, 500)
.setDocumentBackDrawable(R.drawable.documentback, 500);

TextConfiguration textConfiguration = new TextConfiguration()
.setCustomText(TextConfiguration.CustomLabel.onboardingTitle, "Let's get started!")
.setCustomText(TextConfiguration.CustomLabel.onboardingFirstLabel, "- Go to a well-lit location")
.setCustomText(TextConfiguration.CustomLabel.onboardingSecondLabel, "- Remove the document from the plastic")
.setCustomText(TextConfiguration.CustomLabel.onboardingThirdLabel, "- Insert your document in the frame, waiting for it to turn green to perform the capture.");

DocumentRecognition mDocumentRecognition = new DocumentRecognition.Builder("YOUR_MOBILE_TOKEN_SENT_BY_QITECH")
.setDocumentSteps(DocumentSteps)
.setVisualConfiguration(visualConfiguration)
.setTextConfiguration(textConfiguration)
.showIntroductionScreens(true)
.setShowSuccessScreen(false)
.setBackgroundColor("#000000")
.setFontColor("#FFFFFF")
.setFontFamily(DocumentRecognition.FontFamily.open_sans)
.setSessionId("SESSION_ID")
.setLogLevel(DocumentRecognition.LogLevel.debug)
.build();
intent.putExtra("settings", mDocumentRecognition);
startActivityForResult(intent, REQUEST_CODE);

We use a Mobile Token to allow authenticated access from your application to our API. It has probably already been sent to you by email. If you have not yet received your token, send an email to suporte.caas@qitech.com.br.

Our API expects to receive the Mobile Token in all requests to our server coming from the SDK, therefore, it must be included as a configuration parameter through the method mentioned above.

Attention

You must replace"YOUR_MOBILE_TOKEN_SENT_BY_QITECH" with the Mobile Token received from support.

DocumentRecognition.Builder

ParameterFunctionRequired
mobileTokenClient key that identifies that the collected data comes from your application. If you have not yet received your mobile-token, contact mailto: suporte.caas@qitech.com.br.Yes.
.setDocumentSteps(DocumentRecognitionStep[] documentSteps)Defines the document capture flow performed by the user. More information hereYes.
.setSandboxEnvironment()If this parameter is used in the constructor, the library will be configured to send data to the sandbox environment. If absent, requests are sent to the production environment.No.
.showIntroductionScreens(Boolean showIntroductionScreens)When "false" disables the document photo collection introduction screens that appear to the user.No. Default is "true".
.setShowSuccessScreen(Boolean showSuccessScreen)When "false" disables the success screen after photo collection.No. Default is "true".
.setBackgroundColor(String backgroundColor)Allows configuration of the background color of the SDK activities.No. Default is "#ffffff".
.setFontColor(String fontColor)Allows configuration of the font color and icons of the SDK activities.No. Default is "#000000".
.setFontFamily(FontFamily fontFamily)Allows configuration of the font of the SDK activities.No. If not provided, the default is FontFamily.open_sans. Available fonts: FontFamily.open_sans, FontFamily.futura, FontFamily.verdana, FontFamily.roboto, FontFamily.poppins and FontFamily.helvetica.
.setVisualConfiguration(VisualConfiguration visualConfiguration)Used to customize the images shown to the user throughout the SDK execution.No.
.setTextConfiguration(TextConfiguration textConfiguration)Used to customize the onboarding introductory screen texts shown to the user throughout the SDK execution.No.
.setSessionId(String sessionId)Used to define the key that identifies the session started in the SDK. It is used to track the entire flow traversed by the user in the OCR execution through logs. This field accepts up to 255 characters.No.
.setLogLevel(DocumentRecognition.LogLevel logLevel)Used to customize the verbosity level of the SDK logs. Available levels: LogLevel.debug, LogLevel.info, LogLevel.warn, LogLevel.error and LogLevel.trace. Default is LogLevel.debug.No.

The VisualConfiguration Object

ParameterFunctionRequired
.setOnboardingDrawable(int onboarding_drawable, int onboarding_width)Used to configure the image shown to the user on the SDK onboarding screen. The onboarding_drawable parameter should reference the id of the image to be shown and onboarding_width is the desired display size of this image.No.
.setDocumentFullDrawable(int documentfull_drawable, int documentfull_width)Used to configure the image shown to the user on the SDK full CNH capture screen. The documentfull_drawable parameter should reference the id of the image to be shown and documentfull_width is the desired display size of this image.No.
.setDocumentFrontDrawable(int documentfront_drawable, int documentfront_width)Used to configure the image shown to the user on the SDK CNH and RG front capture screen. The documentfront_drawable parameter should reference the id of the image to be shown and documentfront_width is the desired display size of this image.No.
.setDocumentBackDrawable(int documentback_drawable, int documentback_width)Used to configure the image shown to the user on the SDK CNH and RG back capture screen. The documentback_drawable parameter should reference the id of the image to be shown and documentback_width is the desired display size of this image.No.
.setButtonBorderSize(int border_size)Used to configure the border width of the SDK buttons.No. Default is 1.
.setButtonShadow(boolean button_shadow)When set to false removes the shadow effect, default on android, used by the SDK buttons.No. Default is true.

The TextConfiguration Object

ParameterFunctionRequired
.setCustomText(CustomLabel label, String text)Used to configure the texts shown to the user on the SDK onboarding screenNo.