Data Capture Mode

Defined under the namespace Scandit.Datacapture.Core

interface DataCaptureMode

Added in version 6.13.0

DataCaptureMode is the interface implemented by all data capture modes. A data capture mode encapsulates a specific way of capturing data, such as barcode capture. Each capture mode can be individually enabled and disabled to switch between different ways of capturing data.

Capture modes are restricted to the set of data captures modes provided by the Scandit Data Capture SDK. It is not available for implementing custom data capture modes.

Capture modes need to be associated with a data capture context after they have been created using DataCaptureContext.addMode(). This is done automatically when using any of the factory methods such as BarcodeCapture.forContext() and specifying a context. If no context is specified for the factory methods, the mode has to be manually added. Modes can be removed again using DataCaptureContext.removeMode().

Multiple data capture modes can be associated with the same context. However, there are restrictions on which data capture modes can be used together. These restrictions are expressed in terms of capabilities that the capture modes require, for example barcode scanning and barcode tracking both require the capability to scan barcodes. No two capture modes that require the same capabilities can be used with the same data capture context. When conflicting requirements are detected, the data capture context will not process any frames and report a context status error with code 1028.

Usage Sample

Because the DataCaptureMode cannot be instantiated directly, the example below uses the BarcodeCapture to illustrate a typical usage of capture modes. Other capture modes will work very similarly. The typical steps are:

  1. Configure the capture mode by first creating settings.

  2. Instantiate the capture mode and associate with the context and the settings.

  3. Registering a mode-specific listener (not shown).

  1. Enabling recognition by calling method isEnabled() with true.

const settings = new SDCCore.BarcodeCaptureSettings();
settings.setSymbologyEnabled(SDCBarcode.Symbology.QR, true);
const barcodeCapture = await SDCBarcode.BarcodeCapture.forContext(
// Capture modes are enabled by default. The next line is not strictly necessary and
// is only listed to make you aware of the possibility to enable/disable modes.
await barcodeCapture.setEnabled(true);
isEnabled(): boolean

Added in version 6.14.0

True if this data capture mode is enabled, false if not. Only enabled capture modes are processing frames.

Note that executing this method will only affect the data capture and will not affect the FrameSource’s state.

All modes are enabled by default.

setEnabled(enabled: boolean): Promise<void>

Added in version 6.14.0

Calling this method with true causes this data capture mode to start processing frames if the mode was not already enabled.

Calling this method with false when the mode was enabled causes this data capture mode to stop processing frames. The effect is immediate: no more frames will be processed after the change. However, if a frame is currently being processed, this frame will be completely processed and deliver any results/callbacks to the registered listeners. When calling this method from one of the listener callbacks that is called as a result of processing the frame, no more frames will be processed after that.

context: DataCaptureContext | null

Added in version 6.13.0

The context this data capture mode is attached to. When the data capture mode is currently not attached to a context, null is returned.