High Accuracy OCR, Face Recognition & Liveness
  • Language
    • Overview
    • Android
      • Project Setup
      • Accura OCR
      • Accura Face Match
      • Accura Liveness
    • iOS
      • Project Setup
        • Check Pod Size
      • Accura OCR
        • Setup Accura License and Configurations
        • Set Camera View
      • Accura Face Match
      • Accura liveness
    • Flutter
      • Project Setup
      • Android Setup
        • Adding Permissions, Packaging options and Auth Token
        • Adding License
      • iOS Setup
        • Installing pods and Adding Permissions.
        • Adding License
      • Functions
        • Fetching Details From License
        • Setting Configurations, Error messages, Camera customization
        • OCR
        • MRZ
        • Barcode and Bankcard
        • Facematch and Liveness
    • Cordova
      • Project Setup
      • Android Setup
        • Packaging options and Auth Token
        • Adding License
      • iOS Setup
        • Installing pods
        • Adding License
      • Functions
        • Fetching Details From License
        • Setting Title & Error messages
        • OCR
        • MRZ
        • Barcode & Bankcard
        • Facematch & Liveness
    • React-Native
      • Project Setup
      • Android Setup
        • Adding Permissions, Packaging options and Auth Token
        • Adding License
      • iOS Setup
        • Adding Permissions.
        • Adding License
      • Functions
        • Fetching License Details
        • Setting Configurations, Error messages, Camera customization
        • OCR
        • MRZ
        • Barcode & Bankcard
        • Facematch & Liveness
    • Xamarin
      • Project Setup
      • Android Setup
        • Adding Permission & Packages
        • Adding License
      • iOS Setup
        • Adding Permissions
        • Adding License
      • Functions
        • Fetching License details
        • Setup custom messages
        • OCR
        • MRZ
        • Barcode & Bankcard
        • Facematch & Liveness
    • Docker
      • MRZ
      • FaceMatch
      • Face Liveness
      • ID Liveness
      • ID Forgery
    • Web API
      • Accura OCR
      • Accura Face Match
      • Accura Face Liveness
      • Accura ID Liveness
  • Solutions
    • MRZ
      • Android
        • SDK Setup
        • Setup Accura MRZ
      • iOS
        • SDK Setup
        • Setup Accura MRZ
      • Flutter
        • SDK Setup
        • Setup Accura MRZ
      • React Native
        • SDK Setup
        • Setup Accura MRZ
      • Cordova
        • SDK Setup
        • Setup Accura MRZ
    • OCR
      • Android
        • SDK Setup
        • Setup Accura OCR
      • iOS
        • SDK Setup
        • Setup Accura OCR
      • Flutter
        • SDK Setup
        • Setup Accura OCR
      • React Native
        • SDK Setup
        • Setup Accura OCR
      • Cordova
        • SDK Setup
        • Setup Accura OCR
    • Barcode with PDF417
      • Android
        • SDK Setup
        • Setup Accura Barcode with PDF417
      • iOS
        • SDK Setup
        • Setup Accura Barcode with PDF417
      • Flutter
        • SDK Setup
        • Setup Accura Barcode with PDF417
      • React Native
        • SDK Setup
        • Setup Accura Barcode with PDF417
      • Cordova
        • SDK Setup
        • Setup Accura Barcode with PDF417
    • Face Match
      • Android
        • Setup SDK
        • Setup Accura Face Match
      • iOS
        • Setup SDK
        • Setup Accura Face Match
      • Flutter
        • Setup SDK
        • Setup Accura Face Match
      • React Native
        • Setup SDK
        • Setup Accura Face Match
      • Cordova
        • Setup SDK
        • Setup Accura Face Match
    • Face Liveness (2D / Silent / Passive)
      • Android
        • SDK Setup
        • Setup Accura Face Liveness
      • iOS
        • SDK Setup
        • Setup Accura Face Liveness
      • Flutter
        • Setup SDK
        • Setup Accura Face Liveness
      • React Native
        • SDK Setup
        • Setup Accura Face Liveness
      • Cordova
        • Setup SDK
        • Setup Accura Face Liveness
    • Face Liveness (3D / Face Movement)
      • Android
        • SDK Setup
        • Setup Accura Face Liveness
      • iOS
        • SDK Setup
        • Setup Accura Face Liveness
      • Flutter
        • Setup SDK
        • Setup Accura Face Liveness
      • React Native
        • SDK Setup
        • Setup Accura Face Liveness
      • Cordova
        • Setup SDK
        • Setup Accura Face Liveness
    • Face Liveness with Voice Authentication
      • Android
        • SDK Setup
        • Setup Accura Face Liveness
      • iOS
        • SDK Setup
        • Setup Accura Face Liveness
      • Flutter
        • Setup SDK
        • Setup Accura Face Liveness
      • React Native
        • SDK Setup
        • Setup Accura Face Liveness
      • Cordova
        • Setup SDK
        • Set up Accura Face Liveness
    • ⁠Document Liveness and ID Forgery
      • Android
        • SDK Setup
        • Setup Accura OCR
      • iOS
        • SDK Setup
        • Setup Accura OCR
      • Flutter
        • SDK Setup
        • Setup Accura OCR
      • React Native
        • SDK Setup
        • Setup Accura OCR
      • Cordova
        • SDK Setup
        • Setup Accura OCR
    • NFC scanner
      • Android
        • SDK Setup
        • Setup Accura NFC
      • iOS
        • SDK Setup
        • Setup Accura NFC
      • Flutter
        • SDK Setup
        • Setup Accura NFC
      • React Native
        • SDK Setup
        • Setup Accura NFC
      • Cordova
        • SDK Setup
        • Setup Accura NFC
    • Voice Biometrics
      • Android
        • Setup Voice Verification
      • iOS
        • Setup Voice Verification
      • Flutter
        • Setup Voice Verification
      • React Native
        • Setup Voice Verification
      • Cordova
        • Setup Voice Verification
    • Finger Biometrics
      • Android
        • SDK Setup
        • Setup Accura Finger
      • iOS
        • SDK Setup
        • Setup Accura Finger
      • Flutter
        • SDK Setup
        • Setup Accura Finger
      • React Native
        • SDK Setup
        • Setup Accura Finger
      • Cordova
        • SDK Setup
        • Setup Accura Finger
    • MICR Cheque scanner
      • Android
        • SDK Setup
        • Setup Accura MICR
      • iOS
        • SDK Setup
        • Setup Accura MICR
      • Flutter
        • SDK Setup
        • Setup Accura MICR
      • React Native
        • SDK Setup
        • Setup Accura MICR
      • Cordova
        • SDK Setup
        • Setup Accura MICR
Powered by GitBook
On this page
  • Step 1: Before you begin
  • Step 2 : Open Auto Capture Camera
  • Step 3 : Implement face match
  1. Language
  2. Android

Accura Face Match

Face Biometrics is used for Matching Both the Source and the Target Image. It Matches the User's Selfie Image with the Image on the Document.

PreviousAccura OCRNextAccura Liveness

Last updated 10 months ago

Step 1: Before you begin

  1. If you haven't done already then follow steps.

  2. Please download the Accura Scan license and then add it to your app.

    1. To generate your Accura Scan license contact sales@accurascan.com

    2. Move your accuraface.license file into the module (app-level) assets folder (usually <project>/<app-module>/src/main/assets)

    Note: Make sure license file name should be accuraface.license

  3. Permissions required:

    1. Camera Permission android.permission.CAMERA

    2. Storage Permission required only for print out debug logs.

Note: Enable logging for debugging purposes using the methods provided below. Please remember to disable logging before releasing the app. (Storage permission is required for logging). AccuraFaceMatchLog.setPrintLogs(true); AccuraFaceMatchLog.refreshLogfile(this); Log file will be stored in InternalStorage/Downloads/AccuraLog.txt

Step 2 : Open Auto Capture Camera

  • Customize camera screen (Optional)

    FMCameraScreenCustomization cameraScreenCustomization = new FMCameraScreenCustomization();
    
    cameraScreenCustomization.backGroundColor = getResources().getColor(R.color.fm_camera_Background);
    cameraScreenCustomization.closeIconColor = getResources().getColor(R.color.fm_camera_CloseIcon);
    cameraScreenCustomization.feedbackBackGroundColor = getResources().getColor(R.color.fm_camera_feedbackBg);
    cameraScreenCustomization.feedbackTextColor = getResources().getColor(R.color.fm_camera_feedbackText);
    cameraScreenCustomization.feedbackTextSize = 18;
    cameraScreenCustomization.feedBackframeMessage = "Frame Your Face";
    cameraScreenCustomization.feedBackAwayMessage = "Move Phone Away";
    cameraScreenCustomization.feedBackOpenEyesMessage = "Keep Your Eyes Open";
    cameraScreenCustomization.feedBackCloserMessage = "Move Phone Closer";
    cameraScreenCustomization.feedBackCenterMessage = "Move Phone Center";
    cameraScreenCustomization.feedBackMultipleFaceMessage = "Multiple Face Detected";
    cameraScreenCustomization.feedBackHeadStraightMessage = "Keep Your Head Straight";
    cameraScreenCustomization.feedBackBlurFaceMessage = "Blur Detected Over Face";
    cameraScreenCustomization.feedBackGlareFaceMessage = "Glare Detected";
    cameraScreenCustomization.feedBackLowLightMessage = "Low light detected";
    cameraScreenCustomization.feedbackDialogMessage = "Loading...";
    cameraScreenCustomization.feedBackProcessingMessage = "Processing...";
    cameraScreenCustomization.showlogo = 0; // Set 0 to hide logo from selfie camera screen
    cameraScreenCustomization.logoIcon = R.drawable.your_logo; // To set your custom logo
        
    // FMCameraScreenCustomization.CAMERA_FACING_FRONT to set selfie camera       
    // FMCameraScreenCustomization.CAMERA_FACING_BACK to set rear camera
    cameraScreenCustomization.facing = FMCameraScreenCustomization.CAMERA_FACING_FRONT;
    
        
    // 0 for full dark face and 100 for full bright face or set it -1 to remove low light filter
    cameraScreenCustomization.setLowLightTolerence(-1/*lowLightTolerence*/);
    
    // 0 for clean face and 100 for Blurry face or set it -1 to remove blur filter
    cameraScreenCustomization.setBlurPercentage(80/*blurPercentage*/); // To allow blur on face
                                                    
    // Set min and max percentage for glare or set it -1 to remove glare filter
    cameraScreenCustomization.setGlarePercentage(6/*glareMinPercentage*/, 99/*glareMaxPercentage*/);

  • Open Camera screen using android Intent.

    Intent intent = SelfieFMCameraActivity.getCustomIntent(this, cameraScreenCustomization);
    startActivityForResult(intent, ACCURA_FACEMATCH_CAMERA);

Note: If you want to use default camera screen then create intent with null object. Intent intent = SelfieFMCameraActivity.getCustomIntent(this, null);

  • Receive Capture Image

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == ACCURA_LIVENESS_CAMERA && data != null) {
                AccuraFMCameraModel result = data.getParcelableExtra("Accura.fm");
                if (result == null) {
                    return;
                }
                if (result.getStatus().equals("1")) {
                    // result bitmap
                    Bitmap bitmap = result.getFaceBiometrics();
                    Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(this, "Failed" + result.getStatus(), Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

Step 3 : Implement face match

  1. (Optional) Required storage permission to read image file from internal storage.

  2. Initialize com.inet.facelock.callback.FaceHelper in onCreate method

    FaceHelper faceHelper = new FaceHelper(/*your activity context*/);
    faceHelper.setFaceMatchCallBack(this);
    faceHelper.initEngine();

  3. Set src and target image to faceHelper

    Note: Make sure to call "faceHelper.setInputImage" first, followed by "faceHelper.setMatchImage".

    Using a File

    faceHelper.setInputImage(srcFile);
    faceHelper.setMatchImage(targetFile);

    Using a File URI

    faceHelper.setInputImage(srcUri);
    faceHelper.setMatchImage(targetUri);

    Using Path

    faceHelper.setInputImage(srcPath);
    faceHelper.setMatchImage(targetPath);

    Using a Bitmap

    faceHelper.setInputImage(srcBitmap);
    faceHelper.setMatchImage(targetBitmap);

    Using a file URI by using one function

    faceHelper.getFaceMatchScore(srcUri, targetUri);

    Using a file by using one function

    faceHelper.getFaceMatchScore(srcFile, targetFile);

  4. Implement com.inet.facelock.callback.FaceCallbackto your Activity and Override following methods to receive data.

    • Received original image in Bitmap format to display on ui as per your requirement

      @Override
      public void onSetInputImage(Bitmap src1) {
          // set src image to your view
          image1.setImageBitmap(src1);
      }
      
      @Override
      public void onSetMatchImage(Bitmap src2) {
          // set target image to your view
          image2.setImageBitmap(src2);
      }

    • Receive Match score of src and target Image on below override method

      @Override
      public void onFaceMatch(float score) {
          // get face match score
          System.out.println("Match Score : " + ss + " %");
      }

    • (Optional) Recomanded override methods for SDK

      @Override
      public void onInitEngine(int ret) {
      }
      
      @Override
      public void onExtractInit(int ret) {
      }

    • Receive Detected Face position on your src and Target Images

      // Src Image result
      @Override
      public void onLeftDetect(FaceDetectionResult faceResult) {
          if (faceResult != null) {
              // do some code
              Bitmap bitmap = faceResult.getFaceImage(bitmap); // get face Image
          }
      }
      
      // Target Image Result
      @Override
      public void onRightDetect(FaceDetectionResult faceResult) {
          if (faceResult != null) {
              // do some code
              Bitmap bitmap = faceResult.getFaceImage(bitmap); // get face Image
          }
      }

Take a look of for full working example.

Project Setup
ActivityFaceMatch.java