About EMDK For Android

EMDK For Android 7.6

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 v7.6

SEPTEMBER 2020 UPDATE

EMDK for Android 7.6

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).


Features Introduced in EMDK-A 7.6

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.

Version History

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 in ScannerConfig - Allows selection of OcrA font variants
    • enum OcrBVariant in ScannerConfig - Allows selection of OcrB font variants
    • ocrAVariant parameter in ScannerConfig.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 in ScannerConfig.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.
  • New PresentationModeParameters class in ScannerConfig.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
  • 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 in ScannerConfig.ReaderParams.ReaderSpecific.ImagerSpecific controls DPM illumination

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.
  • 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 under ScannerConfig acts as a qualifier for starting scene detection when Presentation is selected as Aim Type.
    • Reader parameter sceneDetectionQualifier in ScannerConfig.ReaderParams.ReaderSpecific.ImagerSpecific activates the Presentation mode of scanning based on a Scene Detection Qualifier.
    • enum AimType in ScannerConfig Presentation option enables this mode.
  • Added a ScannerConfig.MultiBarcodeParams parameter:
    • instantReporting can enable or disable instantaneous reporting of unique barcodes. Enabling this parameter ignores the value of multiBarcodeParams.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).

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

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)
  • Supports character set selection, including the following new parameters in ImagerSpecific, CameraSpecific and LaserSpecific 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.
  • 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 and SecureNFCSample1.

  • 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
  • Adds support for LI3678 rugged Bluetooth scanner
    • A new enum under BarcodeManager.DeviceIdentifier can be used to select the LI3678

Enhanced Notification Manager API:

  • A new getDeviceIdentifier() method in DeviceInfo class identifies the notification device
  • A new enum DeviceIdentifier supports getDeviceIdentifier() 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

  1. Initial settings for a project can be found at Creating a Project using Android Studio.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. When a BarcodeManager instance is created, EMDK disables DataWedge, effecting any application using DataWedge. When BarcodeManager is released, EMDK re-enables DataWedge.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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

  1. A profile name argument (the first argument of processProfile API) is mandatory.
  2. 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 of processProfile API), the profile will NOT be modified.
  3. The profile name provided in extraData (third argument of processProfile API) is ignored if a profile segment is present in criteria (first argument of processProfile API).
  4. Developers must implement EMDKListener and wait for onOpened() before making any API call. If making any API calls inside onResume(), check the status of the EMDKManager object first. In some cases, onResume() can be called before the onOpened() callback, and the EMDKManager object can become null.
  5. 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 using onDestroy() callback for this purpose.
  6. 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 with PROFILE_FLAG.RESET.
  7. 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 in EMDKResults) to obtain the error. The EMDK samples demonstrate the manipulation of response XML for errors.
  8. In some cases the EMDKResults.getExtendedStatusMessage() might not provide correct status information.
  9. Barcode API: Setting scanner configurations is not allowed while a read is pending. This behavior is demonstrated in the BarcodeSample1 code as well.
  10. 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 calling EMDKManager.getInstance(FEATURE_TYPE.BARCODE) during resume/switching to foreground. Zebra recommends using onPause() and onResume() callbacks for this purpose. This behavior is demonstrated in the BarcodeSample1 code as well.
  11. 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.
  12. 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.
  13. 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.
  14. The beam timer for RS507 scanners has a maximum value of 10 (seconds).
  15. Barcode API Specifying any custom audio file with the same name as one of the system audio files (/system/media/audio/notifications/) for decodeAudioFeedbackUri in ScannerConfig.ScannerParams will play a system audio file instead of the specified custom audio file. This is working as designed.
  16. 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. Use SimulScanStatusData.getStatusDescription() to view the name of the unlicensed feature(s).
  17. 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.
  18. 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.
  19. SerialComm API Calling SerialComm.enable(), SerialComm.read() and SerialComm.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.
  20. 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.

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 in enum ScanMode enables simultaneous decoding of multiple barcodes
  • New MultiBarcodeParams class in ScannerConfig adds barcodeCount 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 takes RTS_CTS, XON_XOFF and NONE 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
  • 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 the aimType, 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 the picklist mode, is still support but will ultimately be replaced by the picklistEx 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.