ScanSession Interface Reference

Public Member Functions

List< BarcodegetNewlyRecognizedCodes ()
 
List< BarcodegetNewlyLocalizedCodes ()
 
List< BarcodegetAllRecognizedCodes ()
 
Map< Long, TrackedBarcodegetTrackedCodes ()
 
void clear ()
 
void pauseScanning ()
 
void stopScanning ()
 
void rejectCode (Barcode code)
 
void rejectTrackedCode (TrackedBarcode trackedCode)
 

Detailed Description

Interface for a scan session.

The scan session holds all barcodes that were decoded in the current session. These codes are available as getAllRecognizedCodes().

Configuring Session Behaviour

The scan session is responsible for determining the list of "relevant" barcodes by filtering out duplicates. Depending on your app, different duplicate removal is required. For some applications, only one barcode is required. The scanning process is stopped as soon as one code is decoded. For other applications, multiple codes are scanned after another. For example, a scanner at the cash desk may need to scan multiple products. To avoid duplicates, the same barcode should not be scanned in short succession. The same barcode (data, symbology) should not count as a duplicate if encountered again after a few seconds.

By default, if a barcode has the same symbology and data as code that was decoded less than 500ms ago, it is filtered out as a duplicate. The exact filtering behaviour can be changed by setting the "code duplicate filter", see ScanSettings.setCodeDuplicateFilter for details.

Session Lifetime

The session is cleared when either BarcodePicker.startScanning or , BarcodePicker.stopScanning is called, or when the user manually clears the session using clear.

See also
ScanSettings.setCodeCachingDuration
ScanSettings.setCodeDuplicateFilter
Since
4.9.0

Member Function Documentation

List<Barcode> getNewlyRecognizedCodes ( )
Returns
a new copy of the list of barcodes that have been successfully recognized in the last frame.
Since
4.9.0
List<Barcode> getNewlyLocalizedCodes ( )
Returns
a new copy of the list of barcodes that have been localized in the last frame. This list does not include barcodes that have been successfully recognized.
Since
4.9.0
List<Barcode> getAllRecognizedCodes ( )

Returns the list of barcodes (data, symbology) that have been recognized in this session.

Depending on the code caching and duplicate filtering behaviour, different sets of codes are returned by this method.

See also
ScanSettings.setCodeCachingDuration
ScanSettings.setCodeDuplicateFilter
Returns
a new copy of the list of barcodes that have been successfully decoded in this session
Since
4.9.0
Map<Long, TrackedBarcode> getTrackedCodes ( )

Returns a map between tracked object identifiers and tracked objects.

To toggle tracking use ScanSettings::setMatrixScanEnabled(boolean).

Warning
It will return nil when tracking is disabled.
This property is meant to be used only in the session thread.
Returns
a new copy of the dictionary of tracked objects that have been successfully tracked in the last frame.
Since
5.2.0
void clear ( )

Remove all recognized and localized codes from the session.

Removes all recognized and localized codes from this session. This call also resets the duplicate filter.

Since
4.9.0
void pauseScanning ( )

Immediately Pauses barcode recognition, but keeps camera preview open.

This is useful for briefly pausing the barcode recognition to show the recognized code in an overlay and then resume the scan process to scan more codes.

When only scanning one code and then returning to another part of the application, it is recommended to call stopScanning() instead.

Pausing will not clear the scan session. To remove all codes from the scan session call clear().

See also
BarcodePicker.resumeScanning()
Since
4.9.0
void stopScanning ( )

Immediately stops the scanning and clears the scan session.

Calling stop will release the camera, so that other applications can use it.

See also
BarcodePicker.stopScanning(), BarcodePicker.pauseScanning()
Since
4.9.0
void rejectCode ( Barcode  code)

Prevent beeping/vibrate and highlighting for a particular code.

Use this method to reject a certain code if you have additional methods for verifying the integrity of the code, e.g. with a custom checksum. Rejected codes won't be highlighted in the scan UI. Additionally beep and vibration will be suppressed.

For code rejection to work, you must enabled it by setting code rejection to true.

Rejected codes will be added to getAllRecognizedCodes() like all other codes.

Note that you should only pass codes returned by getNewlyRecognizedCodes() as passing any other code will have no effect. Additionally, you should only calls this method from OnScanListener.didScan(ScanSession)

Parameters
codeThe code to reject
Exceptions
IllegalStateExceptionIf it is called outside of OnScanListener.didScan(ScanSession).
Since
4.15.0
void rejectTrackedCode ( TrackedBarcode  trackedCode)

The codes that should be visualized as rejected in the tracking view.

Use this method to visually reject a certain code in the tracking API. In order to use this feature it is necessary to enable ScanSettings::setMatrixScanEnabled(boolean) and set ScanOverlay::setGuiStyle to ScanOverlay::GUI_STYLE_MATRIX_SCAN.

Warning
This property is meant to be used only in the session thread. Additionally, you should only call this method from ProcessFrameListener.didProcess(byte[], int, int, ScanSession)
Parameters
trackedCodeThe tracked code to visually reject
Exceptions
IllegalStateExceptionIf it is called outside of ProcessFrameListener.didProcess(byte[], int, int, ScanSession).
Since
5.2.0

The documentation for this interface was generated from the following file:
  • ScanSession.java