Barcode scanner integration
Build one scanner boundary, normalize wedge, intent or direct results, and close every session cleanly.
- Barcode / scanner
- Beginner
- Steps
- Validation
Developer Wiki / Getting started
Short, practical guides for software teams connecting existing applications to rugged Android handhelds. Start with a small capture flow, keep device APIs behind an adapter, and validate the exact hardware and deployment configuration before a rollout.
Device-specific SDK downloads remain controlled until release rights and test scope are recorded.
interface CapturePort {
fun start()
fun stop()
fun setListener(listener)
}
class CaptureAdapter(
private val device: CapturePort,
) {
fun begin(onCapture) {
device.setListener(onCapture)
device.start()
}
}A simple learning path
Each guide answers one engineering question and ends with a check you can run on the target configuration before an integration review.
Name the job, capture method, device model and expected output before touching a vendor API.
Open step 02Keep scanner, printer and key APIs behind a small boundary so the app remains testable.
Open step 03Record OS, firmware, SDK, configuration and failure behavior before volume deployment.
Open stepGuides
The first release focuses on workflows developers can reproduce quickly. Advanced device modules stay clearly scoped.
Build one scanner boundary, normalize wedge, intent or direct results, and close every session cleanly.
Turn a vague “Android device supported” claim into a configuration record that another engineer can reproduce.
Use a fake capture port to verify inventory and receiving rules in CI before a physical handheld is available.
Render a bounded page, serialize printer work and make paper, heat, voltage and busy states visible.
Inspect a physical key, preserve the original mapping and provide a reliable restore path before changing behavior.
Separate ICC, PICC, magnetic-stripe, PIN and secure-element work from ordinary application code and logs.
Create a read-only device snapshot, separate privileged operations, and make every deployment change reversible.
Developer resources / SDK and source
RuggedLayer-hosted packages include a version, size and SHA-256. Public GitHub projects download from their original repository so developers can inspect the source and license history.
RuggedLayer / starter source
A small original source file for isolating scanner work from application business rules. It contains no vendor SDK, binary or device claim.
Original RuggedLayer source; reviewed 2026-08-03
UROVO / sdk
A RuggedLayer-hosted UROVO development package for scanner, device, printer, key mapping, card and secure-module integration. Local machine settings and signing materials are excluded.
Public UROVO package; RuggedLayer distribution approved 2026-08-03
RuggedLayer / UROVO / integration demo
An original adapter and step-by-step README that shows how to connect the UROVO ScanManager API without leaking device calls into application business logic.
Original RuggedLayer code reviewed against UROVO SDK v4.1.0326
RuggedLayer / integration demo
A vendor-neutral inventory pattern that lets developers test RFID workflow rules before binding an approved UROVO, SEUIC or other native reader SDK.
Original RuggedLayer source; reviewed 2026-08-03
UROVO / upstream / sample repository
Download the current public repository archive directly from GitHub when you need to compare the packaged v4.1.0326 materials with the latest upstream branch.
Public UROVO repository; upstream branch may change
UROVO / community / community example
A cross-platform bridge pattern. Its README states that proprietary UROVO drivers are not included, so connect the matching native SDK separately.
Community code; no RuggedLayer hardware validation
SEUIC (Dongji) / community / community example
A warehouse workflow example for understanding how an application can own inventory rules around a native RFID boundary. Validate the device and plugin separately.
Community code; not tested by RuggedLayer
SEUIC (Dongji) / multi-vendor / community example
A multi-vendor hardware abstraction and mock-reader reference that names Seuic adapters. Inspect its bundled drivers and NOTICE before selecting dependencies.
Community code; exact device and driver scope require validation
Downloads make the code available; they do not make every API compatible with every model. Confirm the device, region, Android, firmware and SDK baseline before deployment. GitHub downloads remain governed by the license and dependency terms in the source repository.
Local SDK review / public guide map
The local UROVO package was reviewed by capability. The public guides keep device-specific bindings behind an adapter and show which areas need a model-specific SDK, device, permission or security review.
Lifecycle, output transport, result normalization, parameters and failure recovery.
Scanner sample reviewedOpen guideExact model, software stack, operating conditions and evidence status for a reproducible test.
Device and key-control samples reviewedOpen guideBounded page models, status mapping, queueing, paper and thermal recovery.
Printer sample reviewedOpen guideICC, PICC, magnetic stripe, PIN and secure-element work with explicit security ownership.
Card and secure samples reviewedOpen guideFake device ports that keep CI fast and business rules independent of hardware.
Original test doubleOpen guideSnapshot, apply, restore and validate physical key behavior without stranding system input.
Key-map sample reviewedOpen guideRead-only capability snapshots, version baselines, permission boundaries and reversible deployment controls.
Device identity and key-control samples reviewedOpen guideGuide 01 / Barcode
A scanner should not be a mystery hidden inside every screen. Open it when the workflow starts, register the result path, normalize the payload, and close it when the workflow ends.
Use wedge for a fast form retrofit, intent for an explicit event, or the device SDK when you need direct control.
Convert text, raw bytes, symbology and capture time into the object your application owns.
Reject empty and oversized payloads, surface timeouts, and protect against duplicate broadcasts.
Stop decoding and release the manager on every exit path, including background and error states.
Code pattern / Kotlin
This small interface is deliberately vendor-neutral. A UROVO, SEUIC or other device implementation can sit behind it while inventory, receiving and field-service rules stay easy to test.
interface CapturePort {
fun start()
fun stop()
fun setListener(listener: (CaptureEvent) -> Unit)
}
data class CaptureEvent(
val value: String,
val symbology: String?,
val capturedAt: Instant,
)
class CaptureAdapter(
private val device: CapturePort,
) {
fun begin(onCapture: (CaptureEvent) -> Unit) {
device.setListener(onCapture)
device.start()
}
fun end() = device.stop()
}Engineering diagrams / How the pieces fit
Use these diagrams when a team is deciding how to connect a rugged Android device. They show ownership, event flow, integration choices and the evidence required before deployment.
Starts the workflow and gives the user a clear active state.
Requests capture and owns the normalized result.
Opens, registers, starts and translates the device event.
Returns data, then stops and closes on success or failure.
External examples / GitHub
These repositories are useful for architecture, testing, parsing, lifecycle and concurrency ideas. They are external learning references, not RuggedLayer compatibility evidence or replacements for an approved device SDK.
UROVO / upstream
ScanManager, DeviceManager and terminal samples
Use the repository to locate the API family that matches the target workflow. No SPDX license is detected, so do not copy or mirror files without permission.
No SPDX license detectedOpen repositoryUROVO / community
EventChannel and native scanner boundary
Study how a cross-platform app can keep device calls behind a native bridge. The proprietary driver remains a separate dependency and model validation is still required.
MIT reported by GitHubOpen repositoryUROVO / community
React Native events, RFID and trigger controls
Review the JavaScript-to-native boundary only. The README says proprietary UROVO drivers are supplied separately, and GitHub does not report a license for the repository.
No license detectedOpen repositorySEUIC (Dongji) / community
uni-app inventory, inbound, outbound and stocktaking
Use the workflow structure to discuss RFID application ownership. The repository is a community example and does not prove support for every SEUIC model or native plugin version.
Apache-2.0 reported by GitHubOpen repositorySEUIC (Dongji) / multi-vendor
Hardware abstraction, mock reader and tag inventory
Compare the HAL and mock-reader ideas with your own adapter boundary. Its named Seuic adapters still need exact device, driver and release review before use.
Apache-2.0 reported by GitHubOpen repositoryAndroid / platform
UI, domain and data boundaries
Use repository contracts and state ownership as a reference for keeping device adapters out of business screens.
See repository licenseOpen repositoryAndroid / platform
Local, instrumentation and fake dependencies
Compare what belongs in a fast unit test with the small hardware smoke test that needs an actual handheld.
See repository licenseOpen repositoryCommunity / barcode
Barcode parsing and format validation
Study input validation and format handling; this repository is not a device scan engine or a UROVO SDK replacement.
See repository licenseOpen repositoryAndroid / platform
Permissions, resources and foreground/background state
Apply the lifecycle discipline to scanner, printer and other peripherals that must be stopped and released.
See repository licenseOpen repositoryKotlin / platform
Cancellation, dispatchers and async work
Use cancellation and ownership patterns when a device operation can outlive a screen or be interrupted by a retry.
See repository licenseOpen repositoryRead each repository license before copying code. Rewrite examples around your own domain objects and keep model-specific bindings private until their release and test scope are approved.
Guides 04–07 / Device surfaces
Start with a bounded operation, preserve the previous state, and make recovery visible to the operator.
Open the printer, check status, render text or barcode into one page, print, feed, and close it in a `finally` path.
Verify: paper width, busy state, out-of-paper, heat, voltage and cancellation.
Read the original mapping before changing a physical key. Keep system navigation and emergency behavior out of the demo.
Verify: reboot persistence, reset behavior, focus handling and physical recovery.
ICC, PICC, magnetic-stripe, PIN and secure-element integrations require their own security and compliance boundary.
Verify: data minimization, approved test fixtures, ownership and redacted logging.
Read the device baseline first, keep administrator operations explicit, and make key changes reversible with a physical recovery path.
Verify: model, OS, firmware, SDK, permissions, reboot behavior and restore.
Before you ship
Use the same checklist for a lab run, a customer pilot and a volume deployment. One model or one firmware build does not prove every configuration.
| Device | Exact model, scanner or peripheral option, accessories and region variant |
|---|---|
| Software | Android version, firmware build, SDK version and application build |
| Method | Trigger mode, output mode, symbologies, label set, repetitions and environment |
| Result | Expected output, timeout, empty data, duplicate data, busy and recovery behavior |
| Decision | Supported, tested, partially supported, not tested or not supported |
Advanced modules
The local UROVO SDK package includes device, scanner, printer, key-map, card and secure-element examples. The public Wiki turns those materials into original, versioned guides only after the exact API, code and redistribution permissions are recorded.
Request a device-specific guide