Metric Event
Defined in package com.scandit.datacapture.core.metrics
- CameraBackend
Added in version 8.7.0
The camera API a session uses.
- UNKNOWN
Added in version 8.7.0
Not known.
- CAMERA1
Added in version 8.7.0
The legacy Android camera API.
- CAMERA2
Added in version 8.7.0
The Android Camera2 API.
- AV_FOUNDATION
Added in version 8.7.0
AVFoundation on iOS.
- FocusCalibration
Added in version 8.7.0
How the reported focus distance is calibrated.
- UNCALIBRATED_INFINITY_AT_ZERO
Added in version 8.7.0
Uncalibrated, with infinity reported as zero.
- UNCALIBRATED_INFINITY_AT_ONE
Added in version 8.7.0
Uncalibrated, with infinity reported as one.
- APPROXIMATE
Added in version 8.7.0
Approximately calibrated.
- CALIBRATED
Added in version 8.7.0
Calibrated.
- CameraEvent
Added in version 8.7.0
A camera lifecycle transition.
- START
Added in version 8.7.0
The camera started.
- STOP
Added in version 8.7.0
The camera stopped.
- WAKE
Added in version 8.7.0
The camera woke from standby.
- FAILURE
Added in version 8.7.0
The camera failed mid-session.
- CameraResult
Added in version 8.7.0
The outcome of a camera transition.
- SUCCESS
Added in version 8.7.0
The transition succeeded.
- FAILURE
Added in version 8.7.0
The transition failed.
- LifecycleEvent
Added in version 8.7.0
An app lifecycle transition. Only transitions are reported: a session does not open with an event for the state it starts in, so its first lifecycle event can be either value.
- RESUME
Added in version 8.7.0
The app came back to the foreground. On iOS this is when the app becomes active again. On Android it is when one of the app’s activities starts after none was started.
- PAUSE
Added in version 8.7.0
The app left the foreground. On iOS this is, by default, when the app resigns active, so system alerts such as permission prompts and overlays such as Control Center also pause it. On Android it is when none of the app’s activities is started, so dialogs and permission prompts do not pause it.
- CaptureFormat
Added in version 8.7.0
The encoding of a captured frame image.
- JXL
Added in version 8.7.0
JPEG XL.
- PNG
Added in version 8.7.0
PNG.
- GRAY8
Added in version 8.7.0
8-bit grayscale, Width * Height bytes, row-major with no padding.
- BatteryHealth
Added in version 8.7.0
The battery health the platform reports.
- UNKNOWN
Added in version 8.7.0
Not known.
- GOOD
Added in version 8.7.0
Good.
- OVERHEAT
Added in version 8.7.0
Overheating.
- DEAD
Added in version 8.7.0
Dead.
- OVER_VOLTAGE
Added in version 8.7.0
Over voltage.
- UNSPECIFIED_FAILURE
Added in version 8.7.0
An unspecified failure.
- COLD
Added in version 8.7.0
Cold.
- CameraConfigTrigger
Added in version 8.7.0
What prompted a camera-configuration snapshot.
- ATTACH
Added in version 8.7.0
The camera was attached to the context.
- APPLY
Added in version 8.7.0
Camera settings were applied.
- FRAME_SOURCE_CHANGED
Added in version 8.7.0
The context’s frame source changed.
- MetricsConfig
class MetricsConfigAdded in version 8.7.0
The configuration a session runs under, reported as the first event of a session and whenever the configuration changes. SuppressedFields names what the configuration withheld and UnavailableFields names what the platform cannot measure at all, so a suppressed field is distinguishable from an absent one.
- MetricsConfig()
MetricsConfig(schemaVersion:
Int, enabledGroups: HashSet<MetricGroup>, suppressedFields: HashSet<SensitiveField>, unavailableFields: HashSet<String>, unavailableGroups: HashSet<MetricGroup>, frameMetricsSampleRate:Int, maxBufferedCaptures:Int, maxCaptureBytes:Long, sdkVersion: String, platform: String, osVersion: String, deviceManufacturer: String, deviceModel: String)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- schemaVersion
val schemaVersion:
IntAdded in version 8.7.0
The schema version the session emits.
- enabledGroups
val enabledGroups: Set<MetricGroup>
Added in version 8.7.0
The signal groups emitted in this session.
- suppressedFields
val suppressedFields: Set<SensitiveField>
Added in version 8.7.0
The sensitive fields the configuration withholds.
val unavailableFields: Set<String>
Added in version 8.7.0
The environment fields this platform cannot measure, spelled as the record spells them.
val unavailableGroups: Set<MetricGroup>
Added in version 8.7.0
The signal groups this platform never emits, so enabling one yields no events.
- frameMetricsSampleRate
val frameMetricsSampleRate:
IntAdded in version 8.7.0
Every Nth processed frame contributes a frame-metrics event.
- maxBufferedCaptures
val maxBufferedCaptures:
IntAdded in version 8.7.0
The most frame captures copied but not yet delivered at once. A recognition arriving while this many are in flight is dropped and counted.
- maxCaptureBytes
val maxCaptureBytes:
LongAdded in version 8.7.0
The largest capture delivered, in bytes.
- ScanMetrics
class ScanMetricsAdded in version 8.7.0
One recognition, with the timings and geometry that led to it. The fields describing the run-up, the localization counts, timings and sizes, cover the scan: the frames since the previous recognition, up to and including this one. Every barcode recognized in the same frame repeats them, so summing them across recognitions over-counts.
- ScanMetrics()
ScanMetrics(frameId:
Int, symbology: Symbology, data: String?, framesToFirstLocalization:Int, msToFirstLocalization:Long, msBetweenRecognitions: Long?, localizedCount:Int, minBarcodeSizePx: Double, maxBarcodeSizePx: Double, avgBarcodeSizePx: Double, pixelsPerElement: Double?, scanIntention: ScanIntention, torchEnabled:Boolean, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- frameId
val frameId:
IntAdded in version 8.7.0
Joins this recognition to the frame it came from, as the engine numbers frames. The same value as the frame id of the recognized barcode, which is not the frame signal’s own ordinal.
- symbology
val symbology: Symbology
Added in version 8.7.0
The symbology of the recognized barcode. On iOS it is the symbology’s JSON identifier, for example
ean13, because the symbology enum is declared in ScanditBarcodeCapture, which core does not import.
- data
val data: String?
Added in version 8.7.0
The barcode content. Absent unless the ScanData sensitive field is enabled and the license includes AnalyticsScanContent.
- framesToFirstLocalization
val framesToFirstLocalization:
IntAdded in version 8.7.0
Frames from the start of the scan to the first localization, counting the scan’s first frame as 1. Zero when nothing was localized before the barcode was recognized.
- msToFirstLocalization
val msToFirstLocalization:
LongAdded in version 8.7.0
Milliseconds from the first frame of the scan that carried a timestamp to the first localization. Zero when the first localization happened on that frame, when nothing was localized, and when the frame source reports no capture timestamp.
- msBetweenRecognitions
val msBetweenRecognitions: Long?
Added in version 8.7.0
Absent where there is no previous recognition to measure from: the first recognition of a session, the first after a discarded scan, and every frame source that reports no capture timestamp.
- localizedCount
val localizedCount:
IntAdded in version 8.7.0
Barcodes localized but not yet recognized during the scan.
- minBarcodeSizePx
val minBarcodeSizePx: Double
Added in version 8.7.0
The smallest longer side, in pixels, of the axis-aligned bounding box of a barcode counted in LocalizedCount. Rotation moves this away from the symbol’s true side length in either direction: it shrinks for an elongated symbol and grows by up to sqrt(2) for a square one. Zero when LocalizedCount is zero.
- maxBarcodeSizePx
val maxBarcodeSizePx: Double
Added in version 8.7.0
The largest longer side, in pixels, of the axis-aligned bounding box of a barcode counted in LocalizedCount, under the same rotation caveat as MinBarcodeSizePx. Zero when LocalizedCount is zero.
- avgBarcodeSizePx
val avgBarcodeSizePx: Double
Added in version 8.7.0
The mean longer side, in pixels, over the barcodes counted in LocalizedCount, under the same rotation caveat as MinBarcodeSizePx. Zero when LocalizedCount is zero.
- pixelsPerElement
val pixelsPerElement: Double?
Added in version 8.7.0
Pixels per smallest symbol element, absent when the symbology does not define one.
- scanIntention
val scanIntention: ScanIntention
Added in version 8.7.0
The scan intention in force when the barcode was recognized.
- torchEnabled
val torchEnabled:
BooleanAdded in version 8.7.0
Whether the torch was on.
- MsarMetrics
class MsarMetricsAdded in version 8.7.0
MatrixScan AR tracking counts, for a frame in which barcodes entered or left tracking and once more when the session ends. TrackedCount is the frame’s own; the other counts run from the start of the session, or from the last interruption of metrics collection within it.
- MsarMetrics()
MsarMetrics(frameSeq:
Long, trackedCount:Int, newlyTracked:Int, lostCount:Int, avgCodesPerFrame: Double, processedFrames: Int?, droppedFrames: Int?, processedFrameRatio: Double?, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- frameSeq
val frameSeq:
LongAdded in version 8.7.0
The ordinal of the processed frame within the session.
- trackedCount
val trackedCount:
IntAdded in version 8.7.0
Barcodes tracked in this frame.
- newlyTracked
val newlyTracked:
IntAdded in version 8.7.0
Barcodes that started being tracked, counted from the start of the session.
- lostCount
val lostCount:
IntAdded in version 8.7.0
Barcodes whose tracking ended, counted from the start of the session.
- avgCodesPerFrame
val avgCodesPerFrame: Double
Added in version 8.7.0
The running average of tracked barcodes per frame.
- processedFrames
val processedFrames: Int?
Added in version 8.7.0
Frames the session processed. This and DroppedFrames are present only on the session-end event, which their presence marks.
- droppedFrames
val droppedFrames: Int?
Added in version 8.7.0
Frames the session dropped, present alongside ProcessedFrames.
- FrameMetrics
class FrameMetricsAdded in version 8.7.0
Processing cost of one sampled frame, with its resolution. Emitted every Nth processed frame, N being MetricsSettings.frameMetricsSampleRate.
- FrameMetrics()
FrameMetrics(frameSeq:
Long, frameId: Int?, totalProcessingMs: Double, engineMs: Double, fpsRunningAvg: Double, droppedFrames:Int, widthPx:Int, heightPx:Int, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- frameSeq
val frameSeq:
LongAdded in version 8.7.0
The ordinal of the processed frame within the session.
- frameId
val frameId: Int?
Added in version 8.7.0
The engine frame ordinal, present only when this frame produced a recognition.
- totalProcessingMs
val totalProcessingMs: Double
Added in version 8.7.0
Milliseconds the frame spent in the processing pipeline.
- fpsRunningAvg
val fpsRunningAvg: Double
Added in version 8.7.0
The running average of processed frames per second.
- droppedFrames
val droppedFrames:
IntAdded in version 8.7.0
Frames dropped since the previous frame-metrics event.
- widthPx
val widthPx:
IntAdded in version 8.7.0
The frame width in pixels.
- heightPx
val heightPx:
IntAdded in version 8.7.0
The frame height in pixels.
- EnvironmentMetrics
class EnvironmentMetricsAdded in version 8.7.0
Ambient and device conditions around the scan, sampled at most once per second while frames are being processed. An absent value means it was not available for that sample, never that the configuration suppressed it: the platform cannot measure the signal, the camera backend or that frame did not report it, or the SDK does not read it yet. MetricsConfig.unavailableFields names only the first of those.
- EnvironmentMetrics()
EnvironmentMetrics(illuminationEstimate: Double?, exposureMs: Double?, iso: Double?, focusDistance: Double?, focusCalibration: FocusCalibration?, isFixedFocus: Boolean?, batteryPct: Double?, batteryHealth: BatteryHealth?, powerSaveMode: Boolean?, torchEnabled:
Boolean, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- illuminationEstimate
val illuminationEstimate: Double?
Added in version 8.7.0
Smoothed 1 / (exposure x ISO). Unitless and higher when brighter; comparable only against other estimates from the same device. Present only where the SDK computes the smoothed estimate, which is narrower than where exposure and ISO themselves are reported.
- focusDistance
val focusDistance: Double?
Added in version 8.7.0
The focus distance as the platform reports it; see the calibration for its unit.
- focusCalibration
val focusCalibration: FocusCalibration?
Added in version 8.7.0
How the focus distance is calibrated.
- isFixedFocus
val isFixedFocus: Boolean?
Added in version 8.7.0
Whether the camera has a fixed focus.
- batteryHealth
val batteryHealth: BatteryHealth?
Added in version 8.7.0
The battery health the platform reports.
- powerSaveMode
val powerSaveMode: Boolean?
Added in version 8.7.0
Whether the device is in a power-saving mode.
- torchEnabled
val torchEnabled:
BooleanAdded in version 8.7.0
The torch state the mode asked for, not the light the sensor saw: an automatic torch firing on the user’s behalf reads as false.
- CameraMetrics
class CameraMetricsAdded in version 8.7.0
One camera lifecycle transition, so entering and leaving scanning is readable from the stream alone wherever the camera was stopped rather than torn down: a camera destroyed while on, or one whose metrics session closes before its stop is delivered, leaves a start with no stop against it. Start and wake carry Result and DurationMs, plus the resolution once the camera reached on. A mid-session failure carries Code, Reason and SessionUptimeMs, and stop carries SessionUptimeMs. Event identifies the transition, so the fields outside its set are absent.
- CameraMetrics()
CameraMetrics(event: CameraEvent, result: CameraResult?, durationMs: Long?, widthPx: Int?, heightPx: Int?, api: CameraBackend, facing: CameraPosition, code: String?, reason: String?, sessionUptimeMs: Long?, extras:
HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- event
val event: CameraEvent
Added in version 8.7.0
The lifecycle transition this event reports.
- result
val result: CameraResult?
Added in version 8.7.0
Whether the transition succeeded.
- api
val api: CameraBackend
Added in version 8.7.0
The camera API in use.
- facing
val facing: CameraPosition
Added in version 8.7.0
The camera position in use.
- CameraConfigMetrics
class CameraConfigMetricsAdded in version 8.7.0
One snapshot of a camera’s complete configuration. DesiredSettingsJson is what was last requested and CurrentSettingsJson what the camera last put into effect; the two differ only while a request is pending. The typed properties are a projection of CurrentSettingsJson. Both are the settings as the SDK requested them, so a resolution or frame rate the platform substituted is not reflected; the delivered resolution is on the camera start event.
- CameraConfigMetrics()
CameraConfigMetrics(revision:
Long, trigger: CameraConfigTrigger, facing: CameraPosition, api: CameraBackend, preferredResolution: VideoResolution, maxFrameRate: Double, zoomFactor: Double, torchLevel: Double, focusStrategy: String, desiredSettingsJson: JSONObject, currentSettingsJson: JSONObject, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows. A focusStrategy that is not a known focus strategy identifier reaches a sink as
auto.
- revision
val revision:
LongAdded in version 8.7.0
Counts this session’s camera-config events from 1, in the order they were emitted.
- trigger
val trigger: CameraConfigTrigger
Added in version 8.7.0
What prompted this snapshot.
- facing
val facing: CameraPosition
Added in version 8.7.0
The camera position.
- api
val api: CameraBackend
Added in version 8.7.0
The camera API.
- preferredResolution
val preferredResolution: VideoResolution
Added in version 8.7.0
The preferred resolution in the settings.
- maxFrameRate
val maxFrameRate: Double
Added in version 8.7.0
The maximum frame rate in the settings.
- torchLevel
val torchLevel: Double
Added in version 8.7.0
The torch brightness in the settings. Whether the torch is on is not part of the settings.
- focusStrategy
val focusStrategy: String
Added in version 8.7.0
The focus strategy as its JSON identifier, for example
onlyOnRequest. On Android, an unknown identifier passed to the constructor reads asauto.
- desiredSettingsJson
val desiredSettingsJson: JSONObject
Added in version 8.7.0
The settings last requested, as a JSON object: an
org.json.JSONObjecton Android and a dictionary on iOS.
- currentSettingsJson
val currentSettingsJson: JSONObject
Added in version 8.7.0
The settings the camera last put into effect, as a JSON object: an
org.json.JSONObjecton Android and a dictionary on iOS.
- FrameCaptureMetrics
class FrameCaptureMetricsAdded in version 8.7.0
The tabular row for one captured frame. The pixels travel separately, so a sink that only writes rows never has to carry an image.
- FrameCaptureMetrics()
FrameCaptureMetrics(frameSeq:
Long, frameId: Int?, captureId: String, format: CaptureFormat, widthPx:Int, heightPx:Int, bytes:Long, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- frameSeq
val frameSeq:
LongAdded in version 8.7.0
The ordinal of the processed frame within the session.
- frameId
val frameId: Int?
Added in version 8.7.0
The engine frame ordinal, present only when this frame produced a recognition.
- captureId
val captureId: String
Added in version 8.7.0
Ties this row to the encoded image delivered alongside it.
- format
val format: CaptureFormat
Added in version 8.7.0
The encoding of the captured image.
- widthPx
val widthPx:
IntAdded in version 8.7.0
The captured image width in pixels.
- heightPx
val heightPx:
IntAdded in version 8.7.0
The captured image height in pixels.
- bytes
val bytes:
LongAdded in version 8.7.0
The encoded image size in bytes.
- FrameCapture
class FrameCaptureAdded in version 8.7.0
One captured frame image, raw or encoded as Format says, delivered to a sink alongside the frame-capture row it belongs to.
- FrameCapture()
FrameCapture(captureId: String, format: CaptureFormat, width:
Int, height:Int, data: ByteBuffer)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- captureId
val captureId: String
Added in version 8.7.0
Ties the image to the frame-capture row describing it.
- format
val format: CaptureFormat
Added in version 8.7.0
The encoding of the image.
- width
val width:
IntAdded in version 8.7.0
Pixel width of the image in Data.
- height
val height:
IntAdded in version 8.7.0
Pixel height of the image in Data.
- data
val data: ByteBuffer
Added in version 8.7.0
The encoded image bytes. On Android the buffer is a view that is valid only for the duration of the onFrameCaptured call, so copy it to keep the image; on iOS the capture owns the bytes for as long as you hold it.
- LifecycleMetrics
class LifecycleMetricsAdded in version 8.7.0
One app lifecycle transition.
- LifecycleMetrics()
LifecycleMetrics(event: LifecycleEvent, extras:
HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- event
val event: LifecycleEvent
Added in version 8.7.0
The lifecycle transition this event reports.
- ContextMetrics
class ContextMetricsAdded in version 8.7.0
One data capture context status, as reported to the context listeners: the state in force rather than a change. A StatusCode of zero means the context has reached no verdict, either none yet or one since withdrawn. IsValid is true only for an outright success, so it reads false for a withdrawn verdict as well as for a failure; count failures by StatusCode, not by IsValid.
- ContextMetrics()
ContextMetrics(statusCode:
Int, isValid:Boolean, message: String, extras:HashMap<String, String>)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- statusCode
val statusCode:
IntAdded in version 8.7.0
The context status code. Zero when no verdict is in force.
- isValid
val isValid:
BooleanAdded in version 8.7.0
Whether the context is valid in this status. False both for a failure and for a verdict that was withdrawn, so counting failures by this alone over-counts.
- CustomEvent
class CustomEventAdded in version 8.7.0
One event the app injected into the metric stream.
- DroppedEventsMetrics
class DroppedEventsMetricsAdded in version 8.7.0
What the pipeline threw away, so a gap in the data is visible instead of silent.
- DroppedEventsMetrics()
DroppedEventsMetrics(droppedEventsCumulative:
Long, frameCapturesDropped:Long, sinkWriteErrors:Long, reason: String?)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- droppedEventsCumulative
val droppedEventsCumulative:
LongAdded in version 8.7.0
Events dropped since the session started.
- frameCapturesDropped
val frameCapturesDropped:
LongAdded in version 8.7.0
Frame captures dropped since the session started.
- sinkWriteErrors
val sinkWriteErrors:
LongAdded in version 8.7.0
Write errors the bundled sink reported since the session started.
- MetricEvent
class MetricEventAdded in version 8.7.0
One production-metrics event: a schema-versioned envelope plus exactly one populated payload, which is what identifies the event’s kind.
- MetricEvent()
MetricEvent(schemaVersion:
Int, tsUtc:Long, monotonicMs:Long, sessionId: String, deviceId: String, sdkVersion: String, config: MetricsConfig?, scan: ScanMetrics?, msar: MsarMetrics?, frame: FrameMetrics?, environment: EnvironmentMetrics?, camera: CameraMetrics?, frameCapture: FrameCaptureMetrics?, lifecycle: LifecycleMetrics?, context: ContextMetrics?, custom: CustomEvent?, dropped: DroppedEventsMetrics?, cameraConfig: CameraConfigMetrics?)Added in version 8.7.0
Creates an instance, for tests and mocks. Later versions add parameters as the event schema grows.
- schemaVersion
val schemaVersion:
IntAdded in version 8.7.0
The schema version this event follows.
- tsUtc
val tsUtc:
LongAdded in version 8.7.0
Wall-clock epoch milliseconds. Subject to clock changes, so it orders events across sessions but not reliably within one.
- monotonicMs
val monotonicMs:
LongAdded in version 8.7.0
Steady-clock milliseconds, comparable only against other events from the same process run.
- sessionId
val sessionId: String
Added in version 8.7.0
Identifies the session; every event of a session repeats it.
- config
val config: MetricsConfig?
Added in version 8.7.0
The configuration in force. Set on the first event of a session, when the instance is enabled, whenever the configuration changes, and on the first event a newly registered sink receives.
- scan
val scan: ScanMetrics?
Added in version 8.7.0
One recognition.
- msar
val msar: MsarMetrics?
Added in version 8.7.0
One frame of MatrixScan AR tracking.
- frame
val frame: FrameMetrics?
Added in version 8.7.0
One sampled processed frame.
- environment
val environment: EnvironmentMetrics?
Added in version 8.7.0
Ambient and device conditions.
- camera
val camera: CameraMetrics?
Added in version 8.7.0
One camera lifecycle transition.
- frameCapture
val frameCapture: FrameCaptureMetrics?
Added in version 8.7.0
One captured frame; its pixels arrive through the sink separately.
- lifecycle
val lifecycle: LifecycleMetrics?
Added in version 8.7.0
One app lifecycle transition.
- context
val context: ContextMetrics?
Added in version 8.7.0
The data capture context status in force.
- custom
val custom: CustomEvent?
Added in version 8.7.0
One app-injected event.
- dropped
val dropped: DroppedEventsMetrics?
Added in version 8.7.0
What the pipeline threw away.
- cameraConfig
val cameraConfig: CameraConfigMetrics?
Added in version 8.7.0
One snapshot of a camera’s complete configuration.