DataWedge provides the capability for any application on Zebra devices to easily capture data from various input sources (such as barcode scanner, RFID and voice) and optionally manipulate the data as needed based on simple options or complex rules. DataWedge actions and settings are controlled using DataWedge profiles configured either from the UI or programmatically using Android intents. When an application activity is displayed in the foreground, DataWedge automatically detects which profile the app or activity is associated to and applies the configuration from the profile. There are 2 approaches to interacting with DataWedge:
- No-Code - No coding is required. DataWedge captures the data and automatically delivers it to the application based on the configured profile. Create a profile through the DataWedge UI to control how the data is captured and processed. Associate the app/activity to the profile and set the output to Keystroke to deliver the captured data to the app when it is in the foreground.
- DataWedge Integration - Develop data capture apps based on one of the following approaches:
- Low-Code - Basic method to receive data from generic Android intents via broadcast receiver, service or activity without the need for finer control of scanning or data processing. Refer to basic intent sample app.
- DataWedge APIs - Use intents to control DataWedge settings and specify how the data is captured, processed, and delivered to the app without concern of the underlying hardware.
Zebra strongly recommends the use of DataWedge for all applications that require barcode scanning. While Zebra will continue to support EMDK Barcode APIs, the efficiency and feature richness of intent-based interfaces make it a simpler alternative to app development than using EMDK Barcode APIs. Developing EMDK apps require a thorough knowledge of scanning APIs - designing and coding EMDK apps can be time consuming due to its higher level of difficulty. DataWedge offers a simpler interface, better API ease-of-use and flexibility. DataWedge data may be retrieved from any application regardless of the underlying application technology (e.g. Java, Xamarin, any cross-platform framework that supports intents). EMDK provides a subset of DataWedge features. See DataWedge vs EMDK Comparison table for more information.
Important: Control of barcode scanning hardware is exclusive. If an app uses EMDK for scanning, it takes priority over DataWedge and scanning still takes place. If this EMDK app does not relinquish control of the scanner, it prevents apps that rely on DataWedge from scanning. Therefore, it is important to understand how to take control of a device's scanner hardware and, if necessary, release it to other apps when scanning is complete.
DataWedge provides the following primary functions and options:
- Scan and process all major barcode decoders
- Use existing apps to acquire barcodes
- Set DataWedge to acquire scanned data for one or multiple apps
- Use optical character recognition (OCR) to automatically capture text and convert it to digital data for delivery to any app for special use cases, e.g. reading license plates, vehicle identification numbers (VIN), tire identification numbers (TIN), utility meters and identification documents
- Read radio-frequency identification (RFID) tags with RFID Input
- Use voice capture to acquire data with Voice Input
- Use a magnetic stripe reader (MSR) to capture data
- Acquire multiple types of data in a single scan using NG SimulScan
- Designate device screen areas as scan triggers using Data Capture Plus
- Profiles implement DataWedge features for individual apps
- Enable/Disable decoding of individual symbologies to improve speed
- Set parameters for individual barcodes, scanners and readers
- Configure DataWedge to automatically scan with external Zebra peripherals:
- Format output according to simple or custom rules
- Use Plugins for data input, output and processing
- Create custom string handling and other processing criteria
- Import and export settings
- Remotely configure and mass-deploy settings via EMM
- Restore DataWedge settings to factory defaults
- Apply changes remotely to update devices in the field
Note: Availability and operation of DataWedge features vary by device and operating system, see Feature Matrix.
Profiles and Plugins form the basis of most DataWedge functionality. Profiles include all the information about how DataWedge should behave when providing data capture services for a particular application. Much of that information comes from Plugins, which determine how the data will be input, processed and output.
Each Profile generally contains four elements:
- Input Plugin - determines how data should be acquired (e.g. barcode scanner)
- Process Plugin (optional) - specifies how the acquired data should be manipulated
- Output Plugin - controls the passing of data to an application
- Associated Application/Activity - specifies the app/activity for the profile to be applied to
DataWedge profile - Each app that uses DataWedge is associated with a DataWedge profile, which contains options that determine how the data is to be acquired (input), processed (data formatting), and delivered to the receiving app (output). These options are referred to as plugins (e.g. barcode input plugin). DataWedge continually monitors the foreground application - when it detects a change to the foreground app, it activates the appropriate profile associated with the app, if one exists. If the app is not associated with any profile, Profile0 is the default generic profile that takes effect. A profile can be exported so the same DataWedge configurations can be deployed across multiple devices.
For example, there are two different apps that exist on a device that use DataWedge to capture data. Both apps send an Intent whenever data needs to be captured, the action of that Intent being different for each app. By creating two separate DataWedge profiles, each containing different settings for the Intent plugin, both apps can be used seemlessly to capture different types of data.
Create a Profile and Associate App with Profile - By associating an app with the profile, the profile settings are applied when the app comes to the foreground. Data capture input, processing, and output is controlled through the profile via Plugins.
Each Plugin provides further options for finer control:
Input plugins - specifies how the data is captured:
- Barcode – specifies the device scanning hardware, decoders, decoder parameters, reader parameters, and scan parameters applied on the captured data prior to sending the data for processing. The supported hardware can include the integrated built-in devices (such as 1D scanner, 2D scanner, and camera), or externally connected devices (such as Bluetooth SSI or USB SSI scanners).
- Workflow – captures data when executing advanced tasks from a workflow process. This includes automatically capturing text and converting it to digital data for delivery to any app in special use cases (reading license plates, vehicle identification numbers (VIN), tire identification numbers (TIN), utility meters and identification documents), or decoding the barcode from a captured image with the built-in imager.
- MSR (magnetic stripe reader) - acquires data from an MSR card, such as an identity card, on supported hardware.
- RFID (radio-frequency identification) - acquires data from an RFID tag with a built-in or external RFID reader.
- Serial port - acquires data from a peripheral device connected via serial port to the host device.
- Voice - acquires data via speech recognition. Configurations include: trigger voice capture by pressing the PTT button, send a tab/enter command, limit data to alpha or numeric characters, spoken data validation, and working offline.
Processing plugins - (optional) specifies how to format the captured data prior to passing it to the output plugin; most useful in the no-code approach:
- Basic Data Formatting (BDF) - formats data with basic pre-defined options prior to passing it to the output plugin. Options available: add data prefix, add data suffix, send data to foreground app, send data in hex format, append TAB key, and append ENTER key. This can be useful when scanning data to automatically move to the next text field by appending a TAB key.
- Advanced Data Formatting (ADF) - formats data based on custom rules with specific criteria prior to passing it to the output plugin. This can be useful in cases such as triggering an action to pad data with zeros only if the middle 3 digits of an acquired 9 digit Code 128 barcode matches the same 3 digits specified in the rule.
Output plugins – specifies how data is delivered:
- Keystroke – data acquired is sent to the associated application as a series of keystrokes. This can be used to add scanning capabilities to an app without adding any code. Furthermore, it is also fully configurable via the DataWedge Intent API.
- Intent – data acquired is programmatically sent to the associated app/activity using the Android intent mechanism. This is the recommended method for apps to securely receive data in a flexible and configurable manner. The app needs to register for the DataWedge intent to receive the captured data.
- Internet Protocol (IP) – data acquired is sent through a network to a host via specified IP address and port using TCP or UDP. This can be useful to scan data to a PC such as in healthcare environments.
Utilities - (optional) provides tools to aid in data capture:
- Data Capture Plus (DCP) – enables specific areas of the device screen to behave as a virtual scan trigger when tapped, simulating a hardware trigger press. It can be configured in full-screen mode or as a floating scan button placed on the right side only, left side only, or either side of the screen.
- Enterprise Keyboard Configuration – enables the use of custom Enterprise Keyboard layouts within an associated app without modifying the app. Uses a desktop tool, Enterprise Keyboard Designer, to generate the Enterprise Keyboard layout.
DataWedge Settings - provides configurations to general, non-profile related DataWedge options. It includes features such as ignore disabled profiles, disabled app list and import/export profile.
Auto Import – provides the ability to automatically load pre-configured profiles or configuration files in DataWedge. This can be used for device remote deployment using tools such as third party Enterprise Mobility Management (EMM) systems. DataWedge monitors a particular folder for the profile or configuration file. If a profile or configuration file is found, it imports the file to replace any existing configuration or profile.
Mass Deployment - DataWedge profiles and settings can be deployed to multiple devices either manually or with an EMM (Enterprise Mobility Management) software. The exported config file or profile can be automatically imported when placed in the
- Enable Barcode Input to capture the data. Specify the capture settings as needed.
- Select an output method:
- Enable Keystroke Output to collect the data and deliver it as a series of keystrokes, eliminating the need for any application coding.
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Internet Protocol (IP) Output to collect data and pass it to a specific IP address and port using TCP or UDP.
- Specify the scanning device through Scanner Selection.
- Enable the desired barcode type, or decoder, to scan and specify decoder parameter options, if needed.
See How Do I ... for more step-by-step procedures on how to perform common tasks in DataWedge to capture data.
See Best Practices.
- DataWedge Profiles - explains how DataWedge uses Profiles and Plugins
- Create a DataWedge Profile
- Using DataWedge APIs - explains how to use DataWedge intent APIs
- Using Intents - a brief primer on intents and how to configure DataWedge
- DataWedge APIs - lists and describes the DataWedge intent APIs
- Sample Apps - includes demo app to capture data and sample apps that integrate DataWedge with use of DataWedge APIs