Table of contents

Class MRZScannerActivity

MRZScannerActivity is an activity class that implements MRZ scanning features.

Definition

Assembly: DynamsoftMRZScanner.aar

Namespace: com.dynamsoft.mrzscanner.ui

class MRZScannerActivity extends AppCompatActivity

ResultContract

A contract specifying that the activity MRZScannerActivity can be called with an input of type MRZScannerConfig and produce an output of type MRZScanResult.

public static final class ResultContract extends ActivityResultContract<MRZScannerConfig, MRZScanResult>

How to Use

  • Java
  • Kotlin
  1. public class MainActivity extends AppCompatActivity {
       private ActivityResultLauncher<MRZScannerConfig> launcher;
       @Override
       protected void onCreate(@Nullable Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          // Configure the MRZ scanner.
          MRZScannerConfig config = new MRZScannerConfig();
          config.setLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9");
          // Set the document type to scan (default: DT_ALL).
          config.setDocumentType(EnumDocumentType.DT_ALL);
          // Configure which images to include in the result.
          config.setReturnDocumentImage(true);   // Cropped document image (default: true).
          config.setReturnPortraitImage(true);   // Portrait image (default: true).
          config.setReturnOriginalImage(false);  // Original full-frame image (default: false).
          // Configure UI element visibility.
          config.setCloseButtonVisible(true);
          config.setTorchButtonVisible(true);
          config.setCameraToggleButtonVisible(true);
          config.setBeepButtonVisible(true);
          config.setVibrateButtonVisible(true);
          config.setFormatSelectorVisible(true);
          // Configure feedback on successful scan.
          config.setBeepEnabled(true);
          config.setVibrateEnabled(false);
          // Register the activity result callback.
          launcher = registerForActivityResult(new MRZScannerActivity.ResultContract(), result -> {
             if (result.getResultStatus() == MRZScanResult.EnumResultStatus.RS_FINISHED) {
                // Scan completed successfully.
                MRZData data = result.getData();
                String mrzText = data.getMrzText();
                String firstName = data.getFirstName();
                String lastName = data.getLastName();
                // ... access other MRZData fields as needed.
                // Access the cropped document images.
                // These may be null — see MRZScanResult.getDocumentImage for details.
                ImageData mrzSideImage = result.getDocumentImage(EnumDocumentSide.DS_MRZ);
                ImageData oppositeSideImage = result.getDocumentImage(EnumDocumentSide.DS_OPPOSITE);
                // Access the portrait image. Null if not detected or if setReturnPortraitImage(false).
                ImageData portraitImage = result.getPortraitImage();
                // If you need to pass the result to another activity via Intent,
                // call result.retainAllImageInstances() before startActivity()
                // to prevent the native image instances from being recycled.
             } else if (result.getResultStatus() == MRZScanResult.EnumResultStatus.RS_CANCELED) {
                // The user closed the scanner before completing a scan.
             } else if (result.getResultStatus() == MRZScanResult.EnumResultStatus.RS_EXCEPTION) {
                // An error occurred during initialization or scanning.
                int errorCode = result.getErrorCode();
                String errorMessage = result.getErrorString();
             }
          });
          // Launch the MRZScannerActivity when the button is clicked.
          findViewById(R.id.btn_start).setOnClickListener(v -> launcher.launch(config));
       }
    }
    
  2. class MainActivity : AppCompatActivity() {
       private lateinit var launcher: ActivityResultLauncher<MRZScannerConfig>
       override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          setContentView(R.layout.activity_main)
          // Configure the MRZ scanner.
          val config = MRZScannerConfig().apply {
             setLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9")
             // Set the document type to scan (default: DT_ALL).
             setDocumentType(EnumDocumentType.DT_ALL)
             // Configure which images to include in the result.
             setReturnDocumentImage(true)   // Cropped document image (default: true).
             setReturnPortraitImage(true)   // Portrait image (default: true).
             setReturnOriginalImage(false)  // Original full-frame image (default: false).
             // Configure UI element visibility.
             setCloseButtonVisible(true)
             setTorchButtonVisible(true)
             setCameraToggleButtonVisible(true)
             setBeepButtonVisible(true)
             setVibrateButtonVisible(true)
             setFormatSelectorVisible(true)
             // Configure feedback on successful scan.
             setBeepEnabled(true)
             setVibrateEnabled(false)
          }
          // Register the activity result callback.
          launcher = registerForActivityResult(MRZScannerActivity.ResultContract()) { result ->
             when (result.getResultStatus()) {
                MRZScanResult.EnumResultStatus.RS_FINISHED -> {
                   // Scan completed successfully.
                   val data = result.getData()
                   val mrzText = data.getMrzText()
                   val firstName = data.getFirstName()
                   val lastName = data.getLastName()
                   // ... access other MRZData fields as needed.
                   // Access the cropped document images.
                   // These may be null — see MRZScanResult.getDocumentImage for details.
                   val mrzSideImage = result.getDocumentImage(EnumDocumentSide.DS_MRZ)
                   val oppositeSideImage = result.getDocumentImage(EnumDocumentSide.DS_OPPOSITE)
                   // Access the portrait image. Null if not detected or if setReturnPortraitImage(false).
                   val portraitImage = result.getPortraitImage()
                   // If you need to pass the result to another activity via Intent,
                   // call result.retainAllImageInstances() before startActivity()
                   // to prevent the native image instances from being recycled.
                }
                MRZScanResult.EnumResultStatus.RS_CANCELED -> {
                   // The user closed the scanner before completing a scan.
                }
                else -> {
                   // RS_EXCEPTION: an error occurred during initialization or scanning.
                   val errorCode = result.getErrorCode()
                   val errorMessage = result.getErrorString()
                }
             }
          }
          // Launch the MRZScannerActivity when the button is clicked.
          findViewById<View>(R.id.btn_start).setOnClickListener {
             launcher.launch(config)
          }
       }
    }
    

This page is compatible for: