What ships in the box, and what needs a conversation.
Every unit leaves the factory with a working scanner service and a keyboard fallback, so a standard app runs without a line of new code. The SDK, the custom firmware and the pre-install work are real projects — scoped, confirmed and quoted. This page is the boundary between the two, written down so your first call is about the workflow instead of about access.
In the box, on every unit
No request, no approval, no project. This is what the firmware does the day it is powered on.
- Keyboard wedge outputScan data arrives as typed characters. Any app with a text field works — including software nobody can modify.
- Intent broadcastThe scanner service is configured to your app's action name, so scans arrive as a broadcast instead of keystrokes.
- Scanner profileSymbologies on or off, prefix and suffix, code ID, keyboard layout, trigger mode. Set on the unit or pushed as a profile.
- GMS or non-GMSSame hardware, two builds. Decide before the order, not after the rollout.
- Standard Android APIsCamera, NFC, Bluetooth SPP, USB host, external keyboard. Nothing proprietary in the path.
- Device-owner enrolmentWorks with standard Android Enterprise MDM. No custom agent required.
Needs a requirement and a confirmation
Quoted per project, because the answer depends on the firmware branch and the volume. Nothing here is promised before it is checked.
- SDK packageAAR / JAR, sample app, scanner API document — released for the model and firmware you actually ordered.
- Custom firmware defaultsBoot logo, pre-installed APK set, kiosk lockdown, removed services, fixed network settings.
- Key and trigger mappingDedicated scan key, PTT key, function keys remapped for a glove workflow.
- Windows lockdownShell replacement, write filters, driver signing, auto-logon — for Win32 clients that must not show a desktop.
- Market registrationBIS, ANATEL, SDPPI, CITC and similar: scope, testing and lead time confirmed per market.
- OEM / ODMHousing, interfaces, packaging and branding. Starts from a sample you have already tested.
How the scan reaches your app
Three paths exist and they are not interchangeable. Most failed integrations are an app expecting one mode and a device configured for another — which is a five-minute setting, discovered three weeks late.
| Mode | How the data arrives | What your app has to do | Where it breaks |
|---|---|---|---|
| Keyboard wedge | As typed characters into the focused field | Nothing. A text field and a suffix are enough. | Focus moves and the scan lands in the wrong box; no way to tell a scan from typing. |
| Intent broadcast | As a broadcast to a named action | Register a receiver, read the extra, ignore the keyboard. | Action name differs between builds; the app listens and nothing arrives. |
| SDK | Direct calls into the scan engine | Integrate the AAR, handle aiming, illumination and result callbacks. | SDK version does not match the firmware; aiming behaves differently after an update. |
Tell us which mode the software uses and we configure the unit to match before dispatch. If you do not know, send the app and we will check it on a unit — that is the part of a sample that actually saves a week.
What people actually run on these
Six routes, in the order we see them on real projects. None of them requires us to touch your codebase.
Java / Kotlin
The scanner service is a standard Android service. Intent broadcast, or the SDK AAR when the app needs control of aiming and illumination.
Flutter / React Native
Works through the same intent path. If the plugin layer swallows broadcasts, the wedge mode is the fallback that needs no code at all.
WebView / PWA / kiosk
The scan arrives as keystrokes into the focused field. Set a suffix so the form submits on scan; lock the shell so the user cannot leave it.
Win32 — .NET / C++ / Delphi
Windows models run the client natively. Serial or keyboard input, no emulator, no remote session, no rewrite.
Windows CE era clients
Still shipping in enforcement, utilities and yard work. Confirm the build and the runtime before the tender — this is the most common dead pilot we see.
Wedge + ERP client
Keyboard output needs nothing installed. It is the fastest route when the software is an off-the-shelf ERP or WMS client.
One unit, configured for your app
Software teams do not need a catalogue; they need one device that behaves like the fleet will. The evaluation unit ships with the scanner mode, the kiosk setting and the pre-installed build you asked for, so the first week of testing is about the workflow rather than about setup.
- Quantity
- 1 unit (2 where the app needs a client/server pair)
- Configuration
- Scanner mode, kiosk, APK set, locale — set before dispatch
- Dispatch
- 48 h on stocked models
- Cost
- Sample pricing, credited against the rollout order
- Support
- Direct thread with the engineer who configured it
Four lines and we can start
- The app — name, version, Android API level or Windows build
- The scan path — wedge, intent or SDK, if you know it
- The workflow — what is scanned, by whom, indoors or out
- The constraint — price, lead time, certification or a legacy OS
If you only know the workflow, send that. We will ask the rest in one message instead of five.
What we can put in writing
Not a logo wall. Every model carries its own compliance line on the parameter sheet, and that is the document attached to a quote or a tender response.
78 · 59 · 71 models
Declared on the parameter sheet of the models that carry them. Ask for the sheet of the exact model — it is the page a customs broker and a site induction both accept.
31 models at IP67 or better
IP rating and drop height are printed per model, including the test surface and whether the unit was powered on. If a tender needs IP68, filter on it rather than assume it.
59 models with MIL-STD-810
810G and 810H appear across the range. The revision matters: a 810G claim does not automatically satisfy a 810H clause, so match the letter to the requirement.
Battery transport documents — UN38.3, MSDS, IEC62133 — ship with the commercial invoice on request. Market-specific registration (BIS, ANATEL, SDPPI, CITC) is scoped per project; ask before the tender and we will confirm what exists for the model and how long registration takes.
SDK, evaluation unit or a custom build
One form for all three, because the first reply is the same either way: confirm the model, confirm the firmware, then send the file or the unit. No download portal, no ticket queue.
Questions the first call usually contains
Where do I download the SDK?
There is no public download, deliberately. The SDK pack — AAR, sample app, scanner API document and the intent reference for your build — is released after we know the model and the app, so the file you get matches the firmware on the unit you ordered. Send the request and it usually goes out the same working day.
Can the units ship without Google services?
Yes, on the same hardware. Some public-sector and banking deployments cannot use GMS. The build is AOSP-based and the scanner service behaves identically; the difference is which apps can be installed.
What can be pre-configured before dispatch?
Kiosk lockdown, device-owner enrolment, Wi-Fi profiles, APN, scanner profile (symbologies, prefix/suffix, output mode), locale, time zone, screen timeout, and a pre-installed APK set. Anything that changes the OS image is project work and is confirmed in writing first.
Do you sign NDAs and custom firmware agreements?
Yes. Custom builds usually start from a sample you have already tested, and the change list is agreed before any work begins — boot logo, pre-install set, key mapping, removed services.
Which certifications can you put in writing?
The parameter sheet of each model carries its own compliance line, and that is the document we attach — not a logo wall. Market-specific registration (India BIS, Brazil ANATEL, Indonesia SDPPI, Saudi CITC) is handled per project: ask before the tender and we will tell you what exists for that model and what the registration lead time is.
Send the app, not the model number.
Compatibility is checked on a real unit before the order, and the answer is written down — including the case where the honest answer is no.