Data Capture Context

Defined in namespace Scandit.DataCapture.Core.Capture

DataCaptureContext
class DataCaptureContext

Added in version 6.2.0

Data capture context is the main class for running data-capture related tasks. The context manages one or more capture modes, such as BarcodeCapture that perform the recognition. The context itself acts as a scheduler, but does not provide any interfaces for configuring data capture capabilities. Configuration and result handling is handled by the data capture modes directly.

Each data capture context has exactly one frame source (typically a built-in camera). The frame source delivers the frames on which the capture modes should perform recognition on. When a new capture context is created, it’s frame source is null and must be initialized for recognition to work.

Typically a DataCaptureView is used to visualize the ongoing data capture process on screen together with one or more overlays. However it’s also possible to use the data capture context without a view to perform off-screen processing.

Related topics: Get Started, MatrixScan Get Started, Core Concepts <https://docs.scandit.com/core-concepts>.

ForLicenseKey()
static DataCaptureContext ForLicenseKey(string licenseKey)

Added in version 6.2.0

Constructs a data capture context with the provided license key.

To set additional properties like a device name or external id, use Builder().

Note

Due to resource constraints, only one data capture context instance can be used at a given point in time. Each call to ForLicenseKey() disposes previously created data capture contexts, as if Release() were called. Disposed contexts cannot be used for recognition anymore.

Builder()
static DataCaptureContextBuilder Builder(string licenseKey)

Added in version 6.3.0

Constructs a data capture context builder to build a data capture context with additional properties such as device name and external ID.

DeviceId
static string DeviceId { get; }

Added in version 6.4.0

The unique identifier of the device as used by the Scandit Data Capture SDK. This identifier does not contain any device identifying information that would be usable outside of the context of the Scandit Data Capture SDK itself.

OpenSourceSoftwareLicenseInfo
static OpenSourceSoftwareLicenseInfo OpenSourceSoftwareLicenseInfo { get; }

Added in version 7.0.0

The license text and attributions for all third party software used by the Scandit SDK.

SetFrameSourceAsync()
Task SetFrameSourceAsync(IFrameSource frameSource)

Added in version 6.2.0

Set the frame source of this data capture context.

Frame sources produce frames to be processed by the data capture context. The user typically doesn’t create their own frame sources, but use one of the frame sources provided by the Scandit Data Capture SDK. Typical frame sources are web cams, or built-in cameras of a mobile device.

Setting the frame source to null will effectively stop recognition of this capture context.

When the frame source changes, IDataCaptureContextListener.OnFrameSourceChanged() will be invoked on all registered listeners.

FrameSource
IFrameSource FrameSource { get; }

Added in version 6.2.0

Readonly attribute to get the current frame source. To change the frame source use SetFrameSourceAsync().

AddListener()
void AddListener(IDataCaptureContextListener listener)

Added in version 6.2.0

Adds the listener to this data capture context. Context listeners receive events when new data capture modes are added, or the frame source changes.

In case the same listener is already observing this instance, calling this method will not add the listener again.

RemoveListener()
void RemoveListener(IDataCaptureContextListener listener)

Added in version 6.2.0

Removes a previously added listener from this data capture context.

In case the listener is not currently observing this instance, calling this method has no effect.

AddFrameListener()
void AddFrameListener(IDataCaptureContextFrameListener listener)

Added in version 6.2.0

Adds the frame listener to this data capture context. Frame listeners receive events when frames are about to be processed or have been processed by the data capture context.

In case the same listener is already observing this instance, calling this method will not add the listener again.

RemoveFrameListener()
void RemoveFrameListener(IDataCaptureContextFrameListener listener)

Added in version 6.2.0

Removes a previously added frame listener from this data capture context.

In case the listener is not currently observing this instance, calling this method has no effect.

AddMode()
void AddMode(IDataCaptureMode mode)

Added in version 6.2.0

Adds the specified data capture mode to this capture context. Please note that it is not possible to add a mode associated with a context to a different context. If the mode is already associated with this context, this call has no effect.

A data capture context can only be associated with one mode at a time. If multiple modes are associated with the same context, the context will not process any frames and report an error.

Note

If you’re using androidx.fragments dependency and have the situation where a scanning fragment navigates to another scanning fragment with an incompatible mode, make sure you’re using version 1.3.0+ of the dependency. If not, you may run into an incompatible modes error, as the new fragment gets resumed before the previous is paused and for some time incompatible modes may be enabled in the DataCaptureContext at the same time. This results in sessions being empty of any result.

RemoveMode()
void RemoveMode(IDataCaptureMode mode)

Added in version 6.2.0

Removes the mode from this capture context. If the capture mode is currently not associated to the context, this call has no effect.

RemoveAllModes()
void RemoveAllModes()

Added in version 6.2.0

Removes all modes from this capture context. If there currently are no captures modes associated to the context, this call has no effect.

LicenseInfo
LicenseInfo LicenseInfo { get; }

Added in version 6.5.0

Information about the license the context was created for.

Note

This value is available with a small delay. To make sure it is available, set a listener and as soon as IDataCaptureContextListener.OnObservationStarted() was called, it is available.

Release()
void Release()

Added in version 6.2.0

Disposes/releases this data capture context. This frees most associated resources and can be used to save some memory. Disposed/released contexts cannot be used for recognition anymore, trying will result in a ContextStatus with error code 1025. Data capture modes and listeners remain untouched.

This method may be called multiple times on the same context. Further calls have no effect.

ApplySettings()
void ApplySettings(DataCaptureContextSettings settings)

Added in version 6.7.0

Applies the given settings to the data capture context.

FrameProcessingStarted
event EventHandler<FrameProcessingEventArgs> FrameProcessingStarted

Added in version 6.12.0

Occurs when a frame will be processed.

FrameProcessingFinished
event EventHandler<FrameProcessingEventArgs> FrameProcessingFinished

Added in version 6.12.0

Occurs when a frame has been processed.

FrameSourceChanged
event EventHandler<FrameSourceChangedEventArgs> FrameSourceChanged

Added in version 6.12.0

Occurs when the data capture context changed the frame source. Also invoked if the frame source is reset to null.

ModeAdded
event EventHandler<ModeChangedEventArgs> ModeAdded

Added in version 6.12.0

Occurs when a mode got added to the context.

ModeRemoved
event EventHandler<ModeChangedEventArgs> ModeRemoved

Added in version 6.12.0

Occurs when a mode got removed from the context.

StatusChanged
event EventHandler<StatusChangedEventArgs> StatusChanged

Added in version 6.12.0

Occurs when a context status changed.