Developing Mobile App for Scanning and Inventory
Paper or Excel inventory — three days of work, transfer errors, impossible parallel teams. Mobile app with barcode, QR, RFID support moves inventory to real time: multiple employees scan simultaneously, data aggregates centrally, discrepancies visible immediately.
Code Formats and Real Scanning Issues
Most common disappointment on first launch — smartphone camera poorly reads codes in real conditions. ML Kit Barcode Scanning from Google — good choice for Android: supports EAN-13, EAN-8, Code 128, Code 39, QR, DataMatrix, PDF417, Aztec. But poor lighting, glare on packaging or damaged labels make recognition unstable.
Parameters truly affecting accuracy:
- Preview resolution:
CameraXwithResolutionSelector— minimum 1080p for small codes -
BarcodeScannerwithENABLE_ALL_POTENTIALSflag — aggressive mode, finds partially covered codes - Auto-focus via
FocusMeteringActionon center zone — sometimes doesn't trigger on budget devices
Industrial inventory — Zebra TC21/TC52 or Honeywell CT45. These have hardware laser scanner via DataWedge Intent API. Scanning speed — 150–200 codes/minute vs 20–30 for camera. On warehouse, this is fundamental.
RFID Inventory
Separate story — RFID. Zebra RFD40/RFD90 readers connect to smartphone via Zebra RFID SDK (Android). Session API:
val rfidReader = RFIDReader(activity, readerName, null)
rfidReader.connect()
rfidReader.Events.setInventoryScanEvent(true)
rfidReader.Events.addEventsListener(object : RfidEventsListener {
override fun eventReadNotify(event: RfidReadEvents) {
event.ReadEventData.tagData?.forEach { tag ->
viewModel.onTagRead(tag.tagID, tag.peakRSSI)
}
}
override fun eventStatusNotify(event: RfidStatusEvents) {}
})
rfidReader.Actions.Inventory.perform()
One antenna reads up to 300 tags/second. Zone accuracy — plus-minus 3 meters, account for this in cell-based inventory.
Offline Mode — Not Option, But Requirement
No warehouse without Wi-Fi zones. Architecture: Room for local scanned items + WorkManager for background sync. Key — conflict detection. If two employees scanned same item offline, it'll have two local events. On server, deduplication logic by document_id + sku + timestamp.
Large inventory (50,000+ items) needs composite indices on Room queries. @Index(value = ["sku", "location_code"]) in Entity — otherwise two-field search works as full scan.
Inventory Process in App
Typical flow: create inventory doc on server → load to app → scan by zones → compare with accounting data → fix discrepancies → submit result.
Important detail: re-count. When discrepancy found, warehouse worker re-scans zone. App must allow editing already entered items until doc closes, but track all changes with timestamp and user_id for audit.
Integration
Most WMS and ERP provide REST API for inventory documents. 1C — via HTTP service extension. SAP — via OData or RFC. Non-standard systems — via CSV/Excel export on schedule (slow, but works).
Timeline: app for one scan type with REST integration — 4–7 weeks. Full cycle with RFID, offline, multiple integrations — 2–4 months. Cost calculated after analyzing integration requirements and supported devices.







