Skip to main content

Configuring Scanning and Preview Behavior

SparkScan can be customized to fit a wide range of scanning workflows through the combination of Scanning Mode, Scanning Behavior, and Preview Behavior.

This guide explains all valid combinations and when to use them, along with code examples to help you configure your SparkScan setup.

Scanning Modes

The following scanning modes are available:

ModeDescription
DefaultOptimized for close-range, fast-paced scanning. User can aim easily at the intended barcode.
TargetBest for precise scanning when many barcodes are in view. Adds an aimer to the camera preview.

Each scanning mode can be configured to work with different scanning behaviors and preview behaviors.

Scanning Behaviors

BehaviorDescription
Single scanScans one barcode at a time. Requires user interaction before each scan. Ideal for controlled scanning and saving battery.
Continuous scanScans barcodes continuously after being triggered once. Ideal for scanning multiple barcodes quickly.

Preview Behaviors

BehaviorDescription
DefaultPreview fades out when scanner is off. Helps with battery conservation and allows full view of the app interface.
PersistentPreview remains darkened when scanner is off. Useful for environments where visual context or barcode selection is always needed.

Available Configurations

The combination of scanning mode, scanning behavior, and preview behavior allows for flexible configurations to suit different scanning needs.

Default Mode + Single Scan + Default Preview

Ideal for basic, one-barcode-at-a-time scanning with minimal power usage.

val settings = SparkScanSettings()
settings.scanningBehavior = ScanningBehavior.SINGLE

val sparkViewSettings = SparkScanViewSettings()
sparkViewSettings.scanningMode = SparkScanScanningMode.DEFAULT
sparkViewSettings.previewBehavior = PreviewBehavior.DEFAULT

val sparkView = SparkScanView(context, sparkViewSettings)

Default Mode + Single Scan + Persistent Preview

Suitable for single scans where some visual context is needed between scans.

settings.scanningBehavior = ScanningBehavior.SINGLE
sparkViewSettings.scanningMode = SparkScanScanningMode.DEFAULT
sparkViewSettings.previewBehavior = PreviewBehavior.PERSISTENT

Default Mode + Continuous Scan + Default Preview

Best for high-speed, repetitive scanning tasks where interface clarity is still needed after scanning.

settings.scanningBehavior = ScanningBehavior.CONTINUOUS
sparkViewSettings.scanningMode = SparkScanScanningMode.DEFAULT
sparkViewSettings.previewBehavior = PreviewBehavior.DEFAULT

Default Mode + Continuous Scan + Persistent Preview

Good for rapid scanning when the user needs ongoing visual alignment.

settings.scanningBehavior = ScanningBehavior.CONTINUOUS
sparkViewSettings.scanningMode = SparkScanScanningMode.DEFAULT
sparkViewSettings.previewBehavior = PreviewBehavior.PERSISTENT

Target Mode + Single Scan + Default Preview

Useful for precision tasks with isolated barcode scanning and less frequent visual alignment.

settings.scanningBehavior = ScanningBehavior.SINGLE
sparkViewSettings.scanningMode = SparkScanScanningMode.TARGET
sparkViewSettings.previewBehavior = PreviewBehavior.DEFAULT

Target Mode + Single Scan + Persistent Preview

Ideal when barcodes are close together and must be carefully selected, even before activating scanning.

settings.scanningBehavior = ScanningBehavior.SINGLE
sparkViewSettings.scanningMode = SparkScanScanningMode.TARGET
sparkViewSettings.previewBehavior = PreviewBehavior.PERSISTENT

Target Mode + Continuous Scan + Default Preview

Enables high-speed scanning in cluttered barcode environments, with reduced visual distraction between scans.

settings.scanningBehavior = ScanningBehavior.CONTINUOUS
sparkViewSettings.scanningMode = SparkScanScanningMode.TARGET
sparkViewSettings.previewBehavior = PreviewBehavior.DEFAULT

Target Mode + Continuous Scan + Persistent Preview

Perfect for scanning many barcodes in busy layouts where visual alignment must be constant.

settings.scanningBehavior = ScanningBehavior.CONTINUOUS
sparkViewSettings.scanningMode = SparkScanScanningMode.TARGET
sparkViewSettings.previewBehavior = PreviewBehavior.PERSISTENT