DataWedge allows any application on Zebra devices to capture data from barcode, MSR, RFID and other input sources, to process the data and to output it as keystrokes, from intents, or over a network connection. DataWedge actions and settings can be controlled using DataWedge profiles from the UI (aka the “zero-code” approach) or controlled programmatically. When an application screen 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 capture data:
- No-code - No coding is required. Create profiles through the DataWedge UI to control scanning behavior. Once an app/activity is associated to the profile and the output is set to Keystroke, data can be captured into any editable text field within the app. Options are available to define how the data is captured (input) and processed. A default profile, Profile0, enables data capture into the text field of any application.
- Application development - Develop data capture apps based on one of the following approaches:
- Minimal code - Basic method to retrieve data from generic Android intents with the use of a broadcast receiver without the need for finer control of scanning activity 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.
DataWedge APIs are often used in preference to Zebra’s EMDK. 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, Cordova). DataWedge and EMDK provide similar features and control over data capture. See DataWedge vs EMDK Comparison table for more information.
Important: Control of barcode scanning hardware is exclusive. When DataWedge is active, Scanner and Barcode APIs used in apps (such as an EMDK app), become inoperative. Likewise, when an app controls the scanning hardware, other apps (including DataWedge) are locked out. It is therefore 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. For more information, see the section on disabling DataWedge.
DataWedge provides the following primary functions and options (feature availability may vary by version - refer to Version History):
- Scan and process all major barcode decoders, including: Code39, Code128, Datamatrix, DotCode, EAN13, OCR A, OCR B, PDF417, QRCode, UPCA, and UPCE
- Use existing apps to acquire barcodes, images, mag-stripe and other data
- Set DataWedge to acquire scanned data for one or multiple apps
- Read RFID (radio-frequency identification) 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 SimulScan
- Designate device screen areas as scan triggers using Data Capture Plus
- Create Profiles to implement DataWedge features for individual apps
- Configure DataWedge to automatically scan with external Zebra peripherals:
- Enable/Disable decoding of individual symbologies to improve speed
- Set parameters for individual barcodes, scanners and readers
- Format output according to simple or custom rules
- Use Plug-ins 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 MDM
- Restore settings to factory defaults
- Apply changes remotely to update devices in the field
- Generate reports
Note: Availability and operation of DataWedge features varies by device and operating system (which determine the DataWedge version installed on the device).
Profiles and Plug-ins form the basis of most DataWedge functionality. Profiles include all the information about how DataWedge should behave when providing scanning services for a particular application. Much of that information comes from Plug-ins, which determine how the data will be input, processed and output.
Each Profile generally contains four elements:
- An Input Plug-in - to determine how data will be acquired (i.e. a barcode scanner)
- A Process Plug-in - to specify how the acquired data should be manipulated
- An Output Plug-in - to control the passing of data to an application
- An associated application - (or activity) with which to link DataWedge actions
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, "App A" might require a TAB to be sent after each dataset is passed from DataWedge, "App B" might require the ENTER key to be pressed instead. Through Profiles, DataWedge can be configured to process the same set of captured data according to the requirements of any number of individual applications. Alternatively, a single Profile can be created and associated with many applications, acquiring and processing data in the same way for all.
DataWedge Plugins are specified in profiles and determine how the data is captured (input), processed (formatted) and delivered to the app (output). Furthermore, optional profile specific configuration settings are categorized as Utilities, which can be associated with apps or controlled at runtime.
Input plugins - specify how the data is captured:
- Barcode – specify 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 barcode scanner, Bluetooth scanner, and USB SSI Scanner).
- MSR (magnetic stripe reader) - acquire data from an MSR card, such as a credit or debit card, on supported hardware.
- RFID (radio-frequency identification) - acquire data from an RFID tag with the integrated RFID reader built-in some Zebra mobile computers.
- Serial port - acquire data from a peripheral device connected via serial port.
- Voice- acquire data via speech recognition. Configurations include: define a start/end phrase, send a tab/enter command, limit data to alpha or numeric characters, spoken data validation, and working offline.
Processing plugins - specify how to format the captured data prior to passing it to the output plugin:
- Basic Data Formatting (BDF) - format data with basic pre-defined options prior to passing it to the output plug-in. 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) - format 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 – specify how data is delivered:
- Keystroke – acquired data is sent to the associated application as a series of keystrokes into an editable field. It 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 foreground app/activity using the Android intent mechanism. This is useful when data simply needs to be sent to the app screen without allowing the user to edit it. Register for the DataWedge intent to receive the captured data.
- Internet Protocol (IP) – acquired data 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 tools to use:
- Data Capture Plus (DCP) – enables specified 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, left, or both sides of the screen.
DataWedge Settings - provide configurations to general, non-profile related DataWedge options. It includes actions such as ignore disabled profiles, disabled app list, import/export profile, and reporting.
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
Create a Profile and Associate App with Profile - By associating an app with the profile, the app calls on DataWedge to acquire data. Data capture input, processing, and output can be controlled through the profile.
See Best Practices.
- DataWedge Profiles - links and details for all DataWedge Plug-ins
- DataWedge Profile Architecture – explains how DataWedge uses Profiles and Plug-ins
- 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