Regarding EMDK Barcode Scanning APIs
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 using EMDK Barcode APIs.
DataWedge facts:
- DataWedge APIs have the same capabilities currently available in EMDK Barcode APIs.
- DataWedge intent-based APIs are easier and faster to implement than EMDK Barcode APIs.
- New features are added to DataWedge before being considered for EMDK Barcode APIs.
Learn About DataWedge
IMPORTANT
EMDK for Android versions 9.0, 8.0 and 7.6 are functionally equivalent and interchangeable; any of these desktop versions can target any of these device versions. For example, devices built on Zebra's SDM660 platform can contain either EMDK-A 7.6 or EMDK-A 8.0. Zebra publishes identical documentation for these versions to help avoid confusion when it's possible that identical software could be found with different version numbers on different devices.
Overview
EMDK for Android extends the Android Studio IDE for Mac OS and Windows with tools for easily creating powerful line-of-business applications for Zebra Android devices. EMDK for Android includes class libraries, sample apps and source code that enables developers to easily build apps that take full advantage of the power of Zebra devices.
Also included is Profile Manager, which enhances Android IDE with a GUI-based tool for generating all the code required to access and configure Zebra device features and settings. This enables developers to target Zebra devices with fewer lines of code, fewer errors and reduced overall development time.
Important: Zebra distributes the EMDK SDK through a JCenter repository, and the EMDK Profile Manager plug-in through the JetBrains plug-in repository. To install, see the EMDK-A Setup guide.
Supported Devices
See the full list of supported mobile devices on the EMDK product page at Zebra.com.
Scanners and imagers
- DS2278
- DS3608
- DS3678
- DS8178
- LI3608
- LI3678
- RS507
- RS4000
- RS5000
- RS5100
- RS6000
UDI NOTE:
Support for Unique Device Identifier (UDI) barcodes in devices running Android 10 requires BSP 10.12.13 "Update 17" (or later).
New in v9.0
EMDK for Android versions 9.0, 8.0 and 7.6 are functionally equivalent and interchangeable; any of these desktop versions can target any of these device versions. For example, devices built on Zebra's SDM660 platform can contain either EMDK-A 7.6 or EMDK-A 8.0. Zebra publishes identical documentation for these versions to help avoid confusion when it's possible that identical software could be found with different version numbers on different devices.
Version History
Added in v8.0
UDI NOTE:
Support for Unique Device Identifier (UDI) barcodes in devices running Android 10 requires BSP 10.12.13 "Update 17" (or later).
- A Mobility DNA Enterprise license is now required for use of multi-barcode scanning and image/document capture features on Zebra Professional-series devices.
- A new MDNA Licensing Guide describes the scenarios under which apps behave when attempting to access licensing features without a license and how to remedy.
SEPTEMBER 2020 UPDATE
Now supports MX 10.2, adding the following major features and enhancements:
- New Access Manager features:
- Enter the Token received from a caller
- New Beacon Manager CSP:
- Controls Bluetooth Low Energy beacon on mobile computers
- New Bluetooth Manager features:
- Configure single pairing of accessories
- Define trusted devices
- Enhancements to silent pairing rules
- New Clock features:
- Enter date and time in local or Universal Coordinate format
- New Display Manager features:
- Control automatic screen rotation
- Enable/disable adaptive brightness
- Set device brightness level
- New KeyMapping Manager features:
- Support for additional key codes
- New License Manager features:
- Supports URI-based license sources
- New Power Manager features:
- Enable/disable/configure battery saver options
- New PowerKey Manager features:
- Set touch mode options
- New Touch Manager features:
- Support and control latest Zebra devices
- New UI Manager features:
- Show/hide percentage of battery charge on screen
- New Wi-fi features:
- Configure Fine Timing Measurement
- Control encryption options
NOTE:
MX 10.2 support requires updating the EMDK Android Studio plug-in to v7.6.1 (or later).
Added in v7.6
New Features
Now supports MX 9.3, which adds the following features and enhancements:
- Enhanced App Manager now allows an admin to control background data usage on a per-application basis.
- Enhanced Bluetooth Manager now allows silent pairing using a Bluetooth MAC address or PIN.
- Enhanced GPRS Manager APN parameters now support IPv4, IPv6 and the IPv4/IPv6 "dual-stack" protocol.
- Enhanced Keymapping Manager now supports the "grey" key and W1 and W2 buttons.
API Enhancements
Enhanced Barcode Manager API now includes support for:
FinnishPostal4S
Symbology and label type- New
ScannerConfig.DecoderParams.DutchPostal
parameter supports:dutchPostal3S
with the ability to enable or disable decoding of Dutch Postal's "KIX 3S" barcodes
- New
ScannerConfig.MultiBarcodeParams
parameter supports:
reportDecodedBarcodes
with the ability to enable or disable reporting decoded barcode data in a single scan session regardless of the configured barcode count.
New in v7.5
Availability Note
EMDK for Android 7.5 was implemented as a device-runtime update and was not released to the public. Devices containing the EMDK-A 7.5 runtime (or higher) support the new features described below.
New Features
Barcode API now supports OcrA, OcrB, MICRE13B and USCurrency Symbologies and the OCR label type (see below).
Now supports the Zebra RS5100 Ring Scanner
Now supports MX 9.2, which adds the following features and enhancements:
- Enhanced Power Manager now allows an admin to control individual hardware wake up methods (buttons, keycodes)
- Enhanced Display Manager now allows an admin to control device font and display size.
- Enhanced Access Manager can now:
- Prevent one application from stopping another without explicit permission
- Perform remote device troubleshooting with enhanced visibility and control
- Enhanced Cellular Manager implements several new device locking mechanisms.
- Enhanced Keymapping Manager now supports:
- Intent extras
- "Rotate" and "minus" keys
API Enhancements
Enhanced Barcode Manager API now includes:
- Support for OcrA, OcrB, MICRE13B, USCurrency Symbologies and the OCR label type:
- enum
OcrAVariant
inScannerConfig
- Allows selection of OcrA font variants - enum
OcrBVariant
inScannerConfig
- Allows selection of OcrB font variants ocrAVariant
parameter inScannerConfig.DecoderParams.OcrA
to set OcrA font variant. Font variant sets a processing algorithm and default character subset for the given font. Selecting the most appropriate font variant optimizes performance and accuracy.ocrBVariant
parameter inScannerConfig.DecoderParams.OcrB
to set OcrB font variant. Selecting the most appropriate font variant optimizes performance and accuracy.OcrParams
class in ScannerConfig adds the following parameters to configure decoding OCR barcodes:
•inverseOcr
- Changes the OCR behavior for white or light words on a black or dark background.
•ocrLines
– Allows selection of the number of OCR lines to decode. Supports OCR variants such as those for visas, TD1, and TD2 ID cards that automatically set the appropriate number of OCR lines.
•maxCharacters
– Allows selection of the maximum number of OCR characters (including spaces) per line to decode. Strings of OCR characters greater than the maximum are ignored.
•minCharacters
– Allows selection of the minimum number of OCR characters (not including spaces) per line to decode. Strings of OCR characters less than the minimum are ignored.
•quietZone
- Changes the quiet zone to be considered with OCR capture.
•template
- Changes the template to be used with OCR capture. Templates are used to precisely match scanned OCR characters to a desired input format. Carefully constructing an OCR template eliminates mis-decodes.
•orientation
- Specifies the orientation of an OCR string to be read.
•subset
– Allows selection of a custom group of characters in place of a preset font variant.
•checkDigitModulus
- Sets the check digit modulus value for OCR Check Digit Calculation.
•checkDigitMultiplier
- Sets OCR check digit multipliers for the character positions.
•checkDigitValidation
- Allows selection of check digit validation scheme.
- enum
- New
PresentationModeParameters
class inScannerConfig.ReaderParams.ReaderSpecific.ImagerSpecific
to set presentation mode behavior:sensitivity
- Allows the user to set the value for sensitivity during the scanning session- enum
PresentationModeSensitivity
in ScannerConfig - Allows selection of values for sensitivity between LOW, MEDIUM and HIGH.
- New
BarcodeManager.DeviceIdentifier
enum for selection of newly supported RS5100 Bluetooth scanner
Enhanced Notification Manager API now includes:
- New
NotificationManager.DeviceIdentifier
enum allows selection of the RS5100 Bluetooth scanner
New in v7.4
OCTOBER 2019 UPDATE:
EMDK for Android 7.4.1 has been certified to support Android Studio 3.5; the EMDK plug-in must be updated to version 7.4.1 to work with Android Studio 3.5 (or higher).
See the EMDK Setup guide for help updating the plug-in.
Nougat Support Ends
EMDK-A 7.4 and higher no longer targets devices running Android 7.x Nougat or older, including the WT6000 wearable computer. To target the WT6000 (which currently supports up to Nougat), please use EMDK-A 7.3.
FAQ Page
EMDK-A 7.3 and 7.4 now present a page of frequently asked questions submitted to Zebra customer- and partner-support departments. Answers are provided as a mixture of simple guidance, links to relevant guides and/or sample code. Access the page through the "FAQs" tab at the top of any EMDK-A guide page or from the "FAQs" button in the EMDK-A tile on the TechDocs main page.
IrDA API
EMDK-A 7.3 (and later) now contains IrDA APIs, intent-based interfaces for controlling hardware that conforms to the Infrared Data Association (IrDA) specification** commonly found in mobile computers, printers, handheld remote controls and some medical devices.
SmartCradle API
EMDK-A 7.4 introduces Locking SmartCradle APIs for the EC30, intent-based interfaces for controlling the secure charging station of Zebra's latest small form-factor mobile computing device.
EC30 Programmer's Guide
The EC30 Enterprise Companion is Zebra's ultra-compact, fully functional mobile computing device capable of executing TC-series apps out-of-the box. But its small screen might require app changes to ensure a pleasant user experience. The EC30 Programmer's Guide describes how.
NFC Sample App
An NFC SAM sample app demonstrates usage of the NFC Secure Access Module, which allows secure communication with NFC tags from NFC-equipped Zebra devices.
New Features
Now supports MX 9.1, which adds the following features and enhancements:
- Enhanced UI Manager now allows an admin to:
- Control whether password characters are displayed briefly on the screen as they're entered (otherwise masked at all times)
- Enhanced App Manager now allows an admin to:
- Erase all data created by an app specified in the Package parameter
- Enhanced Power Manager now allows an admin to:
- Select hardware signals as the device wake-up method
- Select mappable keycodes as the device wake-up method
API Enhancements
Enhanced Barcode Manager API adds the following features on devices running Android 8.1 Oreo and higher:
- Added
enum
and reader parameters to support DPM mode, which allows selection of the DPM mode based on the type of barcode being scanned:- New ScannerConfig
enum
DpmModes: DISABLED, MODE_1, MODE_2 - New reader parameter DpmMode in
ScannerConfig.ReaderParams.ReaderSpecific.ImagerSpecific
activates the DPM mode
- New ScannerConfig
- Added
enum
and reader parameters to support DPM illumination, providing illumination for DPM barcode reading:- New ScannerConfig
DpmIlluminationControl
enum
allows selection of the DPM illumination options: CYCLE, DIRECT, INDIRECT - New reader parameter
dpmIlluminationControl
inScannerConfig.ReaderParams.ReaderSpecific.ImagerSpecific
controls DPM illumination
- New ScannerConfig
Deprecations
Support for Unique Device Identification (UDI) barcodes is deprecated. GS1, HIBCC and ICCBBA barcode standards will no longer be advanced in the Barcode API, and will be discontinued with Android 10 Q.
Added in 7.3
- EMDK for Android 7.3 (and later) has been certified to support Android Studio 3.4, which was released to the stable channel on Apr. 17.
- Android Intent APIs are now available.
Supported Devices
No new device support added in this version.
New Features
Now supports MX 9.0, which adds the following features and enhancements on devices running Android 7.x Nougat and Android Oreo 8.1 and newer:
- Enhanced Battery Manager now allows an admin to:
- Specify a critically low battery threshold
- Enhanced UI Manager now allows an admin to:
- Control user access to the Large Key Indicator (MC93 device only)
- Turn the Large Key Indicator on or off (MC93 device only)
Also now supports MX 8.4, which adds the following features and enhancements on devices running Android 7.x Nougat and Android Oreo 8.1 and newer:
- Enhanced GPRS Manager now allows an admin to:
- Specify the Mobile Virtual Network Operator (MVNO) type for an Access Point Name (APN)
- Specify APN MVNO Match Data
- Enhanced UI Manager now allows an admin to:
- Control user access to the On-Screen Power Button
- Control user access to the Status Bar
- Enhanced Wi-Fi CSP can now enable/disable:
- Aggregated MAC Protocol Data Unit (AMPDU)
- Gratuitous ARP address resolution protocol
- 2g Channel Bonding (40MHz-wide channel in 2.4GHz band)
- Configuration of Extended WLAN settings
Now supports Secure Access Module (SAM) APIs for conducting secure NFC transactions on Oreo-based TC77 and TC72 devices with SAM hardware.
SAM APIs can be used to:
- Enumerate available SAMs in the device
- Connect to a SAM
- Close a connection with a SAM
- Send APDU commands
- Retrieve the active SAM slot
- Check current SAM status (regardless of SAM connection status)
- Check the SAM type (supports Calypso, FeliCA and MIFARE)
Note: SAM APIs support only transceiver commands with the SAM. For NFC tag reading and tag-related transactions, Zebra recommends using the standard Android NFC APIs.
API Enhancements
Enhanced Barcode Manager API adds the following features on devices running Android 7.x Nougat and Android 8.1 Oreo:
- Support for GridMatrix Symbology and Label type:
- ScannerConfig enum
GridMatrixInverse
describes Enable/Disable/Auto options for decoding GridMatrix barcodes with inverse reflectance. - ScannerConfig enum
GridMatrixMirror
describes Enable/Disable/Auto options for decoding mirrored GridMatrix barcodes. ScannerConfig.DecoderParams.GridMatrix
parameter inverse allows selection of an option from GridMatrixInverse enum.ScannerConfig.DecoderParams.GridMatrix
parameter mirror allows selection of an option from GridMatrixMirror enum.
- ScannerConfig enum
- Added the following
ScannerConfig.DecoderParams.Signature
decoder parameters:- width sets the width of an image.
- height sets the height of an image.
- format sets the image format.
- jpegQuality sets image quality to
.jpeg
. - bpp sets the bits-per-pixel for a monochromatic image.
- Added
ScannerConfig.DecoderParams.I2of5
decoder parameter:- Febraban can enable or disable insertion of special "check" characters in the transmitted data stream of Interleaved 2 of 5 barcodes that are of length 14 and meet specific Febraban criteria.
- Support for Presentation mode activates continuous scene detection; scanning begins upon motion detection without a trigger press. Supports the following parameters:
- enum
SceneDetectionQualifier
underScannerConfig
acts as a qualifier for starting scene detection when Presentation is selected as Aim Type. - Reader parameter
sceneDetectionQualifier
inScannerConfig.ReaderParams.ReaderSpecific.ImagerSpecific
activates the Presentation mode of scanning based on a Scene Detection Qualifier. - enum
AimType
inScannerConfig
Presentation option enables this mode.
- enum
- Added a
ScannerConfig.MultiBarcodeParams
parameter:instantReporting
can enable or disable instantaneous reporting of unique barcodes. Enabling this parameter ignores the value ofmultiBarcodeParams.barcodeCount
param and reports the scanned data to the user instantaneously, without waiting until the end of the scanning session.
- Added support for Bluetooth scanner DS8178:
- New
BarcodeManager.DeviceIdentifier
enum for selecting the DS8178 Bluetooth Scanner. - Digimarc decoding support for rear camera (formerly supported only on internal imagers).
- New
Deprecations
Support ends for SecureNFC APIs. EMDK-A 7.2 was the final version to support these legacy APIs. For secure NFC transactions with EMDK for Android 7.3, Zebra recommends using Secure Access Module (SAM) APIs.
Added in 7.2
New Features
Now supports MX 8.3, which adds the following features and enhancements on devices running Android Oreo 8.1 and newer:
- New NFC Manager CSP adds these new capabilities:
- Enable/Disable:
- NFC radio and its ability to communicate
- NFC Data Exchange Format
- Peer-to-Peer mode
- CPU boost mode
- Card Emulation mode
- NFC usage when the Android "lock screen" is displayed
- Select type A, B, F, or V tags for use
- Select communication speed for Types A and B cards (TC55)
- Select communication speed for ISO 14443-4 cards (TC75)
- Select the Polling mode to balance performance with battery usage
- Reset device to default NFC settings
- Enhanced Access Manager adds these new features:
- Select the Action to perform for Access to Protected Services
- Specify a Service Identifier for a Service
- Specify Package Name of a Service Caller
- Specify a File name for the Signature of a Caller
- Enhanced Cellular Manager adds this new feature:
- Specify an APN authentication type
- Enhanced KeyMapping Manager added this new feature:
- Select a key behavior for 'Diamond' mode
- Enhanced Wi-Fi CSP adds this new feature:
- Enable/Disable Wi-Fi verbose logging
API Enhancements
Enhanced Barcode Manager API adds the following features on devices running Android Oreo 8.1 and newer:
- Adds support for new DotCode Symbology and Label type:
- enum DotCodeInverse under ScannerConfig describes Enable/Disable/Auto options for decoding DotCode barcodes with inverse reflectance.
- enum DotCodeMirror under ScannerConfig describes Enable/Disable/Auto options for decoding mirrored DotCode barcodes.
- inverse parameter under
ScannerConfig.DecoderParams.DotCode
allows selection of one option from DotCodeInverse enum. - mirror parameter under
ScannerConfig.DecoderParams.DotCode
allows selection of an option from DotCodeMirror enum. - A new zoom reader parameter in
ScannerConfig.ReaderParams.ReaderSpecific.CameraSpecific
sets the zoom level (from 1–8 in increments of 1) for the camera.
- Support for Decode Screen Notification displays a screen overlay as a notification on a successful decode. Supports the following parameters in
ScannerConfig.ScanParams
:decodeScreenNotification
enables/disables decode screen notification
- Added
ScannerConfig.ScanParams
scanner parameters:decodeScreenNotificationTime
sets the length of time (in milliseconds) to display the screen overlay upon successful decode.decodeScreenTranslucencyLevel
sets the percentage of translucency (from 20–50; in increments of 5) of the decode screen notification overlay.
Added in 7.1
- Support for Zebra TC20 device running Android 8.1 Oreo (added Feb., 2019)
- Supports Android Multi-user mode. See the Multi-user Programming guide for more information.
UPDATED FEB. 12 2019:
- EMDK for Android 7.0 (and later) has been certified to support Android Studio 3.3, which was released to the stable channel on Feb. 5.
- The EMDK-A 7.1 plug-in will be released soon. The EMDK-A 7.0 plug-in is fully compatible for use in the meantime.
UPDATED MAR. 13 2019:
Enhanced Barcode Manager API includes the following features for devices running Android 8.1 Oreo:
- Support for Decode Screen Notification enables a screen overlay to be displayed after successful decodes.
- New scanner parameter in
ScannerConfig.ScanParams
:decodeScreenNotification
enables/disables decode screen notifications
- New Presentation mode enables motion-based scanning without trigger press:
- Updated
ScannerConfig
enum AimType enables this mode
- Updated
Added in 6.10, 7.0
Important: Zebra now distributes the EMDK SDK through a JCenter repository, and the EMDK Profile Manager plug-in through the JetBrains plug-in repository. To install, see the EMDK-A Setup guide.
Device Support
EMDK 7.0 adds support for the following mobile computers running Android 8.1 Oreo:
- PS20 Personal Shopper
- TC52 Touch Computer
- TC57 Touch Computer
- TC72 Touch Computer
- TC77 Touch Computer
This version adds support for the following scanners and/or imagers:
- DS2278 Standard range barcode scanner
End of Support
IMPORTANT: EMDK 7.0 no longer targets devices running Android 5.x Lollipop or older.
DEVICES NO LONGER SUPPORTED with Lollipop (and older):
- ET5x
- MC18
- MC32N0
- MC40
- TC70
- TC75
- TC8000
- WT6000
API enhancements
Applies only to devices running Android 8.1.0 (Oreo) and higher.
Enhanced Barcode Manager API
- Supports new symbologies and label types: GS1 Datamatrix and GS1 QR Code
- Differentiates between Datamatrix and GS1 Datamatrix label types
- Differentiates between QR Code and GS1 QR Code label types
- Added Digimarc decoding through a reader parameter:
- New digimarcDecoding parameter in
ImagerSpecific
class (supported on internal imagers only)
- New digimarcDecoding parameter in
- Supports character set selection, including the following new parameters in
ImagerSpecific
,CameraSpecific
andLaserSpecific
classes:characterSetSelection
- Sets the character set used to decode the returned barcode data. Generally set to match the encoding of the physical barcode to be scanned (AUTO, ISO_8859_1, Shift_JIS, GB18030, UTF_8).autoCharacterSetPreferredOrder
- Sets the preferred character set order to decode the barcode data when character set selection is set to "Auto."autoCharacterSetFailureOption
- Used as the character set (NONE, ISO_8859_1, Shift_JIS, GB18030, UTF_8) if the system cannot find a character set from the preferred order that can correctly decode the data.
- Supports Zebra DS2278 Bluetooth scanner:
- New enum under
BarcodeManager.DeviceIdentifier
for selecting the DS2278.
- New enum under
- Supports
PRESS_AND_SUSTAIN
AimType for RS6000 and RS507 Bluetooth scanners.
Personal Shopper API
- Supports
PersonalShopper
API for use with Zebra PS20 Personal Shopper device.- Supports Cradle API
- Supports Diagnostic API
Software Support
Support for MX 8.2 provides the following enhancements:
- Enhanced UI Manager adds these new features:
- Enable/disable long-press on HOME key
- Enable/disable date in Notification panel
- Enable/disable long press on Recent Apps header icon to control access to app info
Support for MX 8.1 provides the following enhancements:
- Enhanced Power Manager adds these new actions:
- Specify an on-device file to verify an OS update
- Specify whether to suppress auto-reboot following an A/B upgrade
- Enhanced Battery Manager adds these new actions:
- Enable/disable use of Battery Swap Mode UI
- Enable/disable “battery charging” LED
- Enhanced Bug Report Manager adds a new action:
- Specify a time before expiration (in days) to store or email bug reports or send them to the cloud
- Enhanced Cellular Manager adds these new actions:
- Enable/disable user access to public land mobile network (PLMN) a device uses
- Specify the MCC/MNC network PLMN LockSet
- Show/hide PLMN lock UI
- Determine the status of PLMN lock UI
- Enable/disable Dual SIM Standby
- Get the status of DSDS
- Enhanced DHCP Option Manager adds these new actions:
- Enable/disable requests for a custom DHCP option from server
- Request or disable a specified DHCP Option
- Enable/disable sending of a custom DHCP Option to server
- Send or disable a specified DHCP Option
- Send a value with a specified custom DHCP Option
- Enhanced License Manager adds these new actions:
- Specify an Activation ID to return a license from the device
- Specify server friendly name for returning one or all licenses and for deleting license source
- Select the license source type to be used to return one or all licenses
- Enhanced Settings Manager adds these new actions:
- Enable/disable the slide out drawer for accessing Android system settings
- Enhanced UI Manager adds these new actions:
- Enable/disable Split Screen mode
- Enable/disable Do Not Disturb mode
- Enable/disable Multi-user mode
- Enhanced Wi-Fi adds these new actions:
- Enable/disable MAC address randomization
- Enable/disable Call Admission Control
- Enable/disable user control of Hotspot state (active/inactive)
Deprecations
SecureNFC APIs, which allow applications to perform secure communications with NFC tags such as MifareDesfire, MifarePlus SL3 using the Secure Access Module (SAM), remain supported but are no longer being advanced.
End of Support
EMDK 7.0 no longer supports target devices running Android 5.x Lollipop or older; support for Lollipop devices ended with EMDK 6.9. In general, EMDK updates for specific devices are distributed with the latest BSP or LifeGuard patch.
Other Notes
EMDK code samples no longer include
ProfileDataCaptureSample1
andSecureNFCSample1
.EMDK-A 7.0 is the last version able to target devices running Android 6.x Marshmallow.
Added in 6.9
EMDK 6.9 added support for the following Zebra devices/OSes:
- LI3608 rugged USB scanner
- LI3678 rugged Bluetooth scanner
- WT6000 running Android Nougat
API Enhancements
Enhanced Barcode Manager API:
- Adds support for LI3608 rugged USB scanner
- A new enum under
BarcodeManager.DeviceIdentifier
can be used to select the LI3608
- A new enum under
- Adds support for LI3678 rugged Bluetooth scanner
- A new enum under
BarcodeManager.DeviceIdentifier
can be used to select the LI3678
- A new enum under
Enhanced Notification Manager API:
- A new
getDeviceIdentifier()
method inDeviceInfo
class identifies the notification device - A new enum
DeviceIdentifier
supportsgetDeviceIdentifier()
with following values:- DEFAULT - default
- BLUETOOTH_IMAGER_RS6000 - Bluetooth imager RS6000
- EXTERNAL_VIBRATOR1 - External Vibrator
Software Support
Now supports Android Studio 3.1
Now supports MX 8.0 in Profile Manager adds the following Settings Types and features:
- Enhanced App Manager adds these new actions:
- Clear Application Cache
- Enable/disable All GMS Applications on the "Safe to Disable" list
- Enhanced License Manager adds these new actions:
- Select a licensing file to be embedded in the XML
- Select a pre-activated license source
- Query product-specific license information
- Specify product name to be queried
- Select the method used to supply the license .bin file
- Enhanced Power Manager adds a new action:
- Enable/disable PTT and scan buttons to wake the device from suspend mode
- Enhanced Settings Manager adds a new action:
- Enable/disable tethering and portable hotspot features
- Enhanced UI Manager adds these new actions:
- Enable/disable the Magnification Gesture
- Show/hide the Virtual KeyBoard while Physical Keyboard is active
Deprecations
- SecureNFC APIs allow applications to perform secure communications with the NFC tags such as MifareDesfire, MifarePlus SL3 using the Secure Access Module (SAM). These APIs remain supported but are no longer being advanced.
- The ProfileConfig class, used to access profile data, remains supported but is no longer being advanced. Zebra recommends using the name-value pair function of the Profile Manager. Profile XML data also can be modified directly. See the Clock Sample for information about how to modify Profile XML data.
- The ContinuousRead class, used to enable continuous scanning, remains supported but is no longer being advanced. Zebra recommends using the
aimType
,sameSymbolTimeout
,differentSymbolTimeout
of the camera-, imager- and laser-specific reader parameters. - The picklist field, used for enabling picklist mode, remains supported but is no longer being advanced. Use the
picklistEx
field instead.
Usage Notes
General Interest
- Initial settings for a project can be found at Creating a Project using Android Studio.
- Integrator is a utility included with EMDK that can be used to install EMDK for Android components to installations of Android Studio development environment on the host PC.
- If two applications are making modifications to the same profile, the settings of last modification will be effective for that profile. If both applications need their own settings to be effective and still want to use the same profile name, both applications must set the profile every time they come to foreground. However, if both applications create or modify the same DataCapture profile simultaneously, one of the operations will fail.
- Zebra recommends closing all Android Studio windows before proceeding with uninstallation. Failure to do so might not remove the plug-in component from Android Studio. To remove it manually, go to plug-ins folder (
<Android Studio installation path>\plugins
) and delete folder:com.symbol.emdk.wizard.intellijIdea
. - Wi-Fi: To use the Advanced Options under Wi-Fi, follow these steps:
- PMKID must be enabled to enable PreAuth (PreAuth=1 and PMKID=1)
- FT must be enabled to enable FTRIC (FT=1 and FTRIC=1)
- OKC must be disabled (OKC=0 and PMKID=1) to use PMKID caching
- Important Note: The default “Fast Power Savings” value must be used for the “Power Save” parameter under the Advanced Options. Using the “Do Not Change” value will fail.
- Analytics Manager: “Enable File Upload” option is deprecated and removed (in MX 6.0). Use “File Upload” switch under newly introduced “Feature Switch” section instead. When migrating the profile to new MX version, please note that the configuration will lose the user selection for this field. Zebra recommends editing the configuration to set the “File Upload” options as required in the Analytics Manager configuration.
- If the Bluetooth pairing information for RS507 in previous connection attempts has been deleted on the device side, the next connection attempt might fail. The workaround is to clean-boot the RS507 and retry.
- When a BarcodeManager instance is created, EMDK disables DataWedge, effecting any application using DataWedge. When BarcodeManager is released, EMDK re-enables DataWedge.
- If an application is to use BarcodeManager and ScanAndPairManager features, the first feature instance must be released before getting the other feature instance. Simultaneous use of BarcodeManager and ScanAndPairManager is not allowed.
- ProfileManager has been enhanced to support simultaneous usage in multiple applications. This means that an individual application is need required to release EMDKManager > ProfileManager before going to the background. In previous versions, if an application going to the background did not release the ProfileManager, no other applications could access ProfileManager. However, the following restrictions still apply:
- Only one instance of EMDKManager can be used in an application.
- Only one instance of ProfileManager can be used in an application.
- Other than the ProfileManager, all other features (i.e. EMDKManager > BarcodeManager) used in an application must be released before another application can use that feature.
- All instances of all features including EMDKManager must be released before exiting the application.
- A specific EMDK Profile Manager feature such as KeyMapping Manager might not be supported on all devices supported by EMDK. For details about feature support for specific devices, see the MX Feature Matrix and follow instructions there.
- EMDK does not support Managed Profiles in devices running Android Marshmallow and higher. In a device with Managed Profiles enabled, when an EMDK sample app is installed via File Browser, MDM, etc. only a Personal (unmanaged) app of the EMDK sample will be created and function properly. A Work (managed) app of the EMDK sample will not be created. If an EMDK sample app is installed via Android Debug Bridge (ADB) in a device with Managed Profiles enabled, the Work app as well as the Personal app of the EMDK sample will be created in the device. Only the Personal app will behave as expected, not the Work (Managed) app.
- To EMDK applications cannot use the same serial port at the same time. In addition, if DataWedge serial input is enabled for a port in an active profile, it should be disabled before using the port in EMDK. If the port is already in use, attempts to use the port by EMDK will fail.
- If a VC80x device is connected to a computer via USB cable, serial port communications are blocked. Zebra recommends removing the USB cable before using the serial port.
API-related Usage
- A profile name argument (the first argument of
processProfile
API) is mandatory. - If the profile name is given in the
extraData
(third argument of processProfile API) and if it does not match the profile name (first argument ofprocessProfile
API), the profile will NOT be modified. - The profile name provided in
extraData
(third argument ofprocessProfile
API) is ignored if a profile segment is present incriteria
(first argument ofprocessProfile
API). - Developers must implement
EMDKListener
and wait foronOpened()
before making any API call. If making any API calls insideonResume()
, check the status of theEMDKManager
object first. In some cases,onResume()
can be called before theonOpened()
callback, and theEMDKManager
object can become null. - The
EMDKManager.release()
without an argument specifying the specific feature type (ex: FEATURE_TYPE.BARCODE) releases all the resources bound to underlying features. This API must be called before exiting the application only. Zebra recommends the usingonDestroy()
callback for this purpose. - Profile API: The profile applied by passing
extraData
in Profile Manager's process profile method is stored in the memory until the Profile Manager is released or process profile method is called withPROFILE_FLAG.RESET
. - To determine if the
processProfile
API is successful, check the “statusCode." If the statusCode is set to “CHECK_XML," traverse through the response XML (embedded inEMDKResults
) to obtain the error. The EMDK samples demonstrate the manipulation of response XML for errors. - In some cases the
EMDKResults.getExtendedStatusMessage()
might not provide correct status information. - Barcode API: Setting scanner configurations is not allowed while a read is pending. This behavior is demonstrated in the BarcodeSample1 code as well.
- Barcode API: To handle barcode scanning during device suspend-resume cycle (ex: pressing Power key) or background-foreground switching (ex: pressing Home key), it is required to release BarcodeManager instance by calling
EMDKManager.release(FEATURE_TYPE.BARCODE)
during suspend/switching to background and gain new BarcodeManager instance by callingEMDKManager.getInstance(FEATURE_TYPE.BARCODE)
during resume/switching to foreground. Zebra recommends usingonPause()
andonResume()
callbacks for this purpose. This behavior is demonstrated in the BarcodeSample1 code as well. - Barcode API: The RS507 Bluetooth scanner supports device wake-up from suspend by pressing RS507 trigger. To use this feature, the RS507 scanner should not be disabled when the device goes to suspend. The generally recommended practice is to release the barcode scanner during device suspend or moving an app to the background.
- EMDK API calls such as Barcode, SimulScan and SerialComm are designed to be called sequentially. If called within separate threads, such as from AsyncTasks, some kind of synchronization mechanism should be employed to prevent multiple EMDK API calls getting called simultaneously.
- Barcode API While using Bluetooth and Pluggable scanners such as RS507, RS6000, RS4000, when the scanner DISCONNECTED event is received, the created scanner object must be released and cannot be used for future scanning tasks. When the subsequent CONNECTED event is received, a new scanner object must be created and used for scanning. See the Using Bluetooth Scanner tutorial or the BarcodeSample1 application for more programming information. Zebra recommends maintaining a time gap between every DISCONNECT and CONNECT for the Pluggable scanner devices.
- The beam timer for RS507 scanners has a maximum value of 10 (seconds).
- Barcode API Specifying any custom audio file with the same name as one of the system audio files (/system/media/audio/notifications/) for
decodeAudioFeedbackUri
inScannerConfig.ScannerParams
will play a system audio file instead of the specified custom audio file. This is working as designed. - SimulScan API When
SimulScanReader.read()
is called and if there are any unlicensed features in the selected template, an ERROR state is returned with extended status as "UNLICENSED_FEATURE
" for each unlicensed feature in the template. UseSimulScanStatusData.getStatusDescription()
to view the name of the unlicensed feature(s). - ScanAndPair API: Using the Bluetooth Name requires location permission to discover the nearby Bluetooth devices on devices running Android Marshmallow and higher. These permissions are enabled by default in EMDK. Turning off these permissions manually (Settings > Apps > EMDK Service > Permissions) in the EMDK service would result in failure to pair the Bluetooth device using ScanAndPair.
- Barcode and SimulScan APIs require camera permission to use the device camera for scanning and document capture on devices running Android Marshmallow and higher. These permissions are enabled by default in EMDK. Turning off these permissions manually (Settings > Apps > EMDK Service > Permissions) in the EMDK service would result in failure to use the camera in Barcode and SimulScan.
- SerialComm API Calling
SerialComm.enable()
,SerialComm.read()
andSerialComm.write()
while serial cables are disconnected might not throw an exception. Some kind of a mechanism should be employed to determine whether a cable is connected. - MultiBarcode scanning:
- Barcodes can be of multiple label types. If the required number of barcodes (from 1-10, as set using the
BarcodeCount
parameter) is not in view of the scanner, the scanner will not decode any data. - If the scanner's field of view contains a number of barcodes greater than the value set by
BarcodeCount
, the scanner will randomly decode any barcode(s) until the count is reached. For example, if the count is set to two and eight barcodes are in the field of view, the scanner returns data for the first two barcodes it sees, and returns the data in random order. - There is no guarantee that the order of returned data will be the same on any two scans; order of individual barcode data can vary with each scan.
- In multi-barcode scanning mode, when a picklist reader parameter is set to a value other than “Disabled," the user is expected to move the cross-hair to the specified number of barcodes to be scanned. Set this value (from 2-10) using the
BarcodeCount
parameter. Data is returned only after the specified number of barcodes is read.
- Barcodes can be of multiple label types. If the required number of barcodes (from 1-10, as set using the
Added in 6.8
- Supports compiling applications to Android API level 26 with new "EMDK APIs, Android 26, rev xx (API 26)" add-on
Enhanced Barcode Manager API:
- Supports Multi-barcode decoding
- New
MULTI_BARCODE
value inenum
ScanMode enables simultaneous decoding of multiple barcodes - New
MultiBarcodeParams
class inScannerConfig
addsbarcodeCount
parameter to set the barcode count to be scanned - New
PRESS_AND_SUSTAIN
AimType avoids canceling a read by subsequently pressing the trigger button (TC20/TC25 devices only)
Enhanced SerialComm API:
flowControlMode
under Serial Config takesRTS_CTS
,XON_XOFF
andNONE
values
Enhanced Profile Manager DataCapture:
- Supports Serial Input plug-in
- Support Zebra DS-3608 scanner
- Support for Multi-barcode decoding:
- New
Multi Barcode
Scanning Mode option in Reader parameters enables simultaneous decoding of multiple barcodes - New
Barcode count
field under Multi-barcode parameters allows a barcode count to be set
- New
- Supports sending ENTER command as a string
- Enhanced support for Inter-character delay
- New
PRESS_AND_SUSTAIN
AimType avoids canceling a read by subsequently pressing the trigger button (TC20/TC25 devices only)
Support for MX 7.2 adds the following Setting Types and features:
- Enhanced Display Manager CSP:
- On VC80 devices, adds the ability to force the display to “Stay Awake” and remain on.
- Enhanced Power Manager CSP:
- Turn ON/OFF “Doze Mode” energy saving features on the device. When enabled, only specially designated apps can prevent the device from entering a low-power state to preserve battery life.
- Enhanced Remote Scanner Manager CSP:
- Supports RS-507 and DS-3608 scanners
- Enhanced Settings Manager CSP:
- Enable/Disable application notification control on devices running Android Nougat
Deprecations
Support for configuring DataWedge using EMDK Profile Manager is deprecated. Profile Manager capabilities categorized under Data Capture are still supported but will no longer be advanced. Zebra recommends using DataWedge intent-based APIs to configure DataWedge profiles going forward.
Support for
ProfileConfig
class has been deprecated. This class, which can be used to access profile data, remains supported but will no longer be advanced. Instead, Zebra recommends using the name-value pair function of Profile Manager or carefully modifying the Profile XML directly. Refer to the Clock Sample for information about modifying Profile XML data.Support for the
ContinuousRead
class is deprecated. This class, which can be used to enable continuous scanning, is still supported but will no longer be advanced. Zebra recommends using theaimType
,sameSymbolTimeout
,differentSymbolTimeout
reader parameters for the device camera, imager or laser.Support for the
picklist
field is deprecated. This field, which is used for enabling thepicklist
mode, is still support but will ultimately be replaced by thepicklistEx
field.
EMDK-A Components
Profile Manager
The EMDK's exclusive Profile Manager Technology is an additional advantage for developers giving you a GUI based development tool built on our open framework. This allows you to write fewer lines of code resulting in reduced development time, effort and errors. This innovative feature not only gives you easy access to critical functions such as bar code scanning and transaction processing via a magnetic stripe reader (MSR) but also functionality not available in Google's Android SDK.
Samples & Programmer's Guide
There are sample projects that are included as part of the EMDK For Android installation. You can import the project into your IDE and run on your device. Look at the Sample Guide for more details on using these samples. You can also reference the Programmers Guide for a complete walk-through of building your first EMDK For Android application.
Java APIs
The EMDK for Android offers access to the device's Barcode capabilities through traditional native Java Barcode APIs.