Skip to content

Android - SDK Implementation Guide

EnQualify Android SDK provides remote identity verification capabilities to your mobile application. This SDK, consisting of OCR, NFC, facial recognition, and video call modules, supports self-service, hybrid, and fully representative supported flows.


What’s in This Document?

Section What You Will Find?
Getting Started Requirements, Maven setup, project configuration
Core Module BaseModel, SessionModel, SSL certificate, audio files management
OCR Module ID card and passport reading
NFC Module Contactless chip reading (RFID)
Face Module Liveness check and face comparison
VideoCall Module Customer-representative video calling
Utility Module Appointment, document signing, address verification, KYB
UI Customization Interface parameters through backoffice

Overview of the SDK

Modular Structure

EnQualify SDK consists of independent modules. Each module can be installed separately; however, all depend on the Core Module.

Text Only
CoreModule (mandatory core)
├── OCRModule       → ID card / passport reading
├── NFCModule       → NFC chip reading
├── FaceModule      → Liveness and face comparison
├── VideoCallModule → Video call
└── UtilityModule   → Utility services

Which Module Do You Need?

You can choose the module based on the flow of your application:

Flow Type Required Modules
Just ID reading (OCR) Core + OCR
OCR + NFC chip verification Core + OCR + NFC
Full self-service (OCR + NFC + Face) Core + OCR + NFC + Face
Full flow with video call Core + OCR + NFC + Face + VideoCall
Appointment / document signing Core + Utility

ℹ️ If you want to use the repeat feature of OCR and Face in the VideoCall flow, the OCR and Face modules must also be added to the project.


Minimum Requirements

Parameter Value
Minimum Android SDK API 25 (Android 7.1)
Supported Architectures armeabi-v7a, arm64-v8a
Build System Gradle (Kotlin DSL recommended)
Emulator Support Compiles; however, flows requiring camera/NFC do not work

Installation

The SDK is added to the project via Maven. Access credentials (repo URL, username, password) will be provided to you. Detailed installation steps can be found on the Getting Started page.


Core Concepts

Initialization Lifecycle

Each module follows the same initialization lifecycle: after initialize() is called, the SDK automatically manages the steps of token creation → session login → fetching settings in order. When all steps are completed, the initializeCompleted(module: EnModules) callback is triggered; at this point, operations related to the module can be initiated.

In case of error, there is a separate callback for each step: tokenCreateFailed(), sessionAddFailed(), settingsGetFailed(). Please refer to the Core Module page for details.

ℹ️ The Utility Module is different from this flow: it does not receive SessionModel, it is only initialized with BaseModel and becomes ready with the baseModelCompleted() callback.

Callback Structure

The SDK communicates results and errors through the callback (interface) pattern. Each module has its own Callbacks interface that needs to be implemented in the relevant Activity.

Fragment & FrameLayout

All modules manage camera screens and page transitions through a FrameLayout. A full-screen FrameLayout must be present in the layout of the relevant Activity.

SSL Security

The SDK implements a two-layer security: SSL pinning (against man-in-the-middle attacks) and RSA signing renewed per session. The certificate configuration is done through the BaseModel.signallingCertificateList and mapiCertificateList fields. Disabling SSL pinning in live environments is strongly discouraged.

Singleton Structure

All modules operate as singletons. The instance created with initialize() can be accessed throughout the application session using getInstance(). A new session will not be created if there is an existing session.


Quick Start Steps

If you are adding the EnQualify SDK to your project for the first time, follow this sequence:

  1. Getting Started → Obtain Maven access credentials, configure libs.versions.toml and settings.gradle.kts
  2. Getting Started → Add permissions in AndroidManifest.xml, configure NFC and camera settings
  3. Core Module → Define BaseModel and SessionModel
  4. Proceed to the relevant module’s page → Call initialize(), implement the callbacks, start the flow

For your questions or any issues you encounter during integration, you can contact our support team.