Overview
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.
DataWedge use is based on the following roles:
- Administrator or User - configure DataWedge through the UI to capture data and deliver it to a specified app; no coding needed
- Developer - develop apps to capture data using Android intents
This section serves as a guide to DataWedge features and functionality.
Main Features
DataWedge provides the following primary functions and options:
Data Capture
- 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
- Use Free-Form OCR to capture printed text from a free-form image using the built-in scanner
- Barcode Highlighting provides on-screen feedback by highlighting barcodes based on defined rules to identify the barcode being captured and aid in finding items.
- 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:
Data Processing
- Format output according to simple or custom rules
- Use Plugins for data input, output and processing
- Create custom string handling and other processing criteria
Deployment
- 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.
DataWedge Functionality
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.
A DataWedge Profile contains four main components:
- 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 must be 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. 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.
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 /enterprise/device/settings/datawedge/autoimport
directory.
Administrator & User Role
System administrators or end users can configure DataWedge through the UI to capture data and deliver it to a specified app. No coding is needed. Use the DataWedge UI to create profiles and configure settings. DataWedge captures the data and automatically delivers it to the specified application based on the configured profile.
General steps to create and configure a profile:
- Create a profile through the DataWedge UI to control how the data is captured and processed.
- Associate the app/activity to the profile.
- Set the output to Keystroke to deliver the captured data to the app when it is in the foreground.
For security, administrators can prevent apps from accessing DataWedge intent APIs by allowing only approved apps to be granted API access; see Control Access to DataWedge intent APIs guide. This involves the use of DataWedge Manager (DataWedgeMgr) from MX, which also allows control of the following:
- Access to DataWedge user interface
- Auto-import of DataWedge settings
- Import of NG SimulScan Template
How Do I...?
This section provides step-by-step procedures to perform common tasks in the DataWedge UI for administrators and end users.
- 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 Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Internet Protocol (IP) Output to collect data and pass it to a specific IP address and port using TCP or UDP.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Keystroke Output to collect the data and deliver it as a series of keystrokes, eliminating the need for any application coding.
- Specify the scanning device through Scanner Selection.
- Enable the desired barcode type, or decoder, to scan and specify decoder parameter options, if needed.
- Enable MSR Input to capture the data. Specify the capture settings as needed.
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
Capture data from Radio-frequency identification (RFID) tags using integrated RFID Zebra mobile computers
- Enable RFID 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 Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Internet Protocol (IP) Output to collect data and pass it to a specific IP address and port using TCP or UDP.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Keystroke Output to collect the data and deliver it as a series of keystrokes, eliminating the need for any application coding.
- Enable Serial 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 Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Internet Protocol (IP) Output to collect data and pass it to a specific IP address and port using TCP or UDP.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Keystroke Output to collect the data and deliver it as a series of keystrokes, eliminating the need for any application coding.
- Enable Voice 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 Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Internet Protocol (IP) Output to collect data and pass it to a specific IP address and port using TCP or UDP.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Keystroke Output to collect the data and deliver it as a series of keystrokes, eliminating the need for any application coding.
- Enable Barcode Input to capture the data. Specify the capture settings as needed, including: set Scanning Mode to MultiBarcode (part of NG SimulScan) and set MultiBarcode parameters.
- 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 Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Internet Protocol (IP) Output to collect data and pass it to a specific IP address and port using TCP or UDP.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Basic Data Formatting if one of the following is required:
- Enable Keystroke Output to collect the data and deliver it as a series of keystrokes, eliminating the need for any application coding.
- Specify the scanning device through Scanner Selection.
- Enable the desired barcode type, or decoder, to scan and specify decoder parameter options, if needed.
Capture a document based on a pre-defined or custom template – retrieve data from the document by scanning a barcode, or capture part of or the entire document as an image using Document Capture
- Enable Barcode Input to capture the data. Specify the capture settings as needed, including: set Scanning Mode to Document Capture (part of NG SimulScan) and set the Document Selection with the proper template. Refer to Document Capture Programmer’s Guide.
- Use DataWedge content provider to retrieve scanned data into your app.
- Set the output method:
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Enable Use Content Providers.
- Enable Basic Data Formatting if one of the following is required:
- Add prefix to the data
- Add suffix to the data
- Send data as hexadecimal
- Append a TAB character
- Append an ENTER character
- Enable Advanced Data Formatting if custom data processing rules are required.
- Enable Intent Output to collect data and pass it programmatically to an app using DataWedge intent APIs.
- Specify the scanning device through Scanner Selection.
- Enable the desired barcode type, or decoder, to scan and specify decoder parameter options, if needed.
Data Formatting:
Format data captured before delivery to the application, e.g. add suffix, add prefix, send enter, or create a custom formatting rule.
Configuration:
Configure the feedback type (audio, haptic, LED, or screen notification) to alert the user of the results when scanning barcodes
Control how the barcode data is captured by configuring barcode reader parameters, such as aim timer, aim type, picklist, and illumination
Designate an area of the device screen (e.g. floating button or full screen) to behave as a scan trigger using Data Capture Plus (DCP)
Designate an Enterprise Keyboard, whether built-in or custom, as the default input method editor (IME)
Security:
Developer Role
Develop data capture apps using one of the following methods:
- Generic Android intents (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 DataWedge APIs based on Android intents to control DataWedge settings and specify how the data is captured, processed, and delivered to the app without concern of the underlying hardware.
General steps to develop an app using DataWedge intent APIs:
- Create a profile to control how the data is captured, processed and output.
- Register for the intent in your app.
- Receive the intent in your app, extract the data from the Intent extras and process it as needed.
For additional developer resources, refer to Programmer's guides, Developer Articles and Blogs and Samples providing guidance on use of DataWedge intent APIs and best practices.
Best Practices
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.
If there are two different apps on a device that use DataWedge to capture data and both apps send an Intent whenever data needs to be captured, the action of that Intent would be different for each app. Therefore, two separate DataWedge profiles can be created, each containing different settings for the Intent plugin for both apps to be used seamlessly to capture different types of data.
See Best Practices within the DataWedge Programmer's Guide.
Related information:
- 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