DataWedge Background Scanning on Zebra Android Devices

DataWedge Background Scanning

The sample application to accompany this post is available on Github

Although not common, some customers targeting Zebra Android mobile computers need to be able to scan barcodes when the application is in the background or the mobile computer is in the standby state. Following a question posted on the developer forum we came up with an architecture that appeared to work reliably.

Creating Flutter Applications for Zebra Android Devices with DataWedge

Over the past couple of years I have seen an increasing interest in developing Flutter apps for Zebra Android mobile devices. Until recently I had directed developers to a 3rd party flutter demo that shows how to wrap the EMDK (Zebra's Android scanner SDK). That sample is at but Zebra's recommended approach is to use DataWedge rather than the EMDK for scanner integration and I noticed a number of people asking about non-Zebra device compatibility, something that is more difficult to achieve with the EMDK.

Using DataWedge with Multiple Android Activities

This article assumes familiarity with Zebra's DataWedge tool as well as the DataWedge profile mechanism. For an overview of DataWedge, please refer to the DataWedge Techdocs page

A very common use case for many Zebra Android developers is using the device scanner across multiple activities in their application, this could cover the following:

Quickly Suspend Scanning in Your App with DataWedge

Most applications will need to temporarily disable the barcode scanner during their lifecycle. There are two ways to achieve this with DataWedge, both using the ScannerInputPlugin API: Enable / Disable or Resume / Suspend:

Enable / Disable:

Enable / Disable can be called at any time

Datawedge does not read "\" slashes in the barcode

This is only an issue on some new Symbol MC9190 RF scanners and all of my warehouse locations include a slash "\" in the actual barcode - ie Warehouse1\Aisle2\BinA - when I scan the barcodes it eliminates the slashes in the barcode and appears to be removing data before or after the slash. I'm sure this is just a setting but I can't find how to turn it on. Help please!

Undocumented difference between DataWedge 6.7 and 7.0


On my app, when using my MC330M to scan an EAN, it outputs a single string using a single "change" event. My MC330M has DataWedge on version 6.7.39

Now I'm testing my app on a TC20 with DataWedge on version 7.0.4 and it breaks a feature because the output of an EAN scan is sent with multiple "change" events.
One "change" event for each characters.

[TC-20][DataWedge 6.7][Android] How to scan variable number of bar codes in multi barcode mode?

I'm working on simple data collecting and matching program.
There will be 5 barcodes to scan in 2 groups (group of 3 and group of 2).
Scanning them one by one would be to slow, so I need to scan them in multi-barcode mode.
Problem is that I have to declare how many barcodes I want do scan in profile, but I have 2 barcodes in one location and 3 barcodes in another location, so I would need kind of flexible profile that would just accept min 2 and max 3 codes.

E/ScannerFramework: privV4lGetFrame: Polling 35ms Timeout: 0


I've been trying out the new CC6000, all going well except after a few minutes the scanner in the app becomes unresponsive.

I've seen these errors come in but don't understand them.

E/ScannerFramework: privV4lGetFrame: Polling 35ms Timeout: 0

About the time the scanner became unresponsive these lines got logged.

Migrating from EMDK to Datawedge


Currently, we use the Zebra scanners with EMDK integrated into our app. I've been reading the techdoc and noticed that Zebra "strongly recommends using DataWedge for all applications that require barcode scanning and data capture." It seems like Zebra will also always keep Datawedge up to date first.

So my question is, is it worthwhile to migrate from EMDK to Datawedge? If anyone has migrated before, how difficult is the process?

Thanks a lot!

DataWedge Broadcast Intents are not being delivered

My datawedge version is 6.2.23 on Android 6.0.1 running on TC700K.

I have created a profile in DW that should output broadcast intents, but my app never receives them.

I have tried various combinations of action/category being specified in the intent output:

- Action Only
- Action + Category

My app is built w/ Xamarin and is programmed to receive the broadcasts via a context registered broadcast receiver. I have verified that my app receives the intents when I broadcast them via ADB.