Overview
The MAUIBarcodeSample1 demonstrates how to leverage Zebra’s EMDK (Enterprise Mobility Development Kit) within a modern .NET MAUI application to perform barcode scanning on Zebra Android mobile computers. This sample application showcases core functionalities of the Barcode Manager API:
- Scanner Enumeration: Dynamically detects and selects from available hardware scanner devices (e.g., Internal Imager, Camera, Bluetooth Scanners).
- State Management: Enables, disables, and releases scanner resources to align with the Android App Lifecycle.
- Trigger Configurations: Implements both physical Hardware Trigger (HARD) and Software-initiated Trigger (SOFT) scans.
- Data Handling: Asynchronously captures, parses, and renders decoded barcode data and its corresponding symbology (e.g., CODE-128, QR Code, EAN-13).
- Status Notification: Monitors and outputs the real-time device scan state and initial EMDK connection status.
Requirements
To build, deploy, and run this sample, ensure the development environment and target hardware meet the following specifications:
- Framework: .NET MAUI (.NET 10 or later)
- Target OS: Zebra device running Android 11, 13, 14, 15 or later
- EMDK Component: Zebra EMDK for MAUI/Xamarin 11.1 or later
- Development Environment: Visual Studio 2026 or later configured with the .NET Multi-platform App UI development workload.
Settings & Actions
| Action / Setting |
Description |
| Start |
Instantiates the chosen scanner device, attaches data and status event listeners, configures decoders/triggers, and opens the hardware scan engine. |
| Stop |
Gracefully closes the active scanner, detaches event handlers, and releases the hardware locks so other systems can access the scanner. |
| Select Scanner |
Displays a dropdown menu of all discovered scanner devices connected to or integrated with the hardware. |
| Select Trigger Type |
Specifies the scan activation behavior:
• HARD: Pulling the physical gun or side trigger activates the scan beam. • SOFT: Tapping the scan button activates the beam.
|
| Decoders List |
Enables/disables individual barcode symbologies (Code 39, Code 128, EAN 8, EAN 13) to optimize performance and prevent erroneous reads. |
| Continuous Scanning |
When enabled, the scanner remains in an active scanning loop to immediately prime another read request once a barcode is successfully decoded. |
Loading the Sample Application
- Choose a sample and click See Details.
- Click Download.
IMPORTANT: Extract the downloaded project zip file to C:\ (or to the root of an alternate drive).
- Navigate to the root of the unzipped project folder and double-click the .sln file to load the project in the default IDE.
Alternatively, launch the preferred IDE and load the project via the File > Open menu.
Running the Sample
Visual Studio detects the connected USB device and displays the device name next to the Play button.

Press the Play button next to the device name. The IDE builds, deploys and starts the sample app on the device.
Using the Sample App
- Application Launch and EMDK Verification: Launch the the MAUIBarcodeSample1 app on the Zebra mobile computer. The application automatically performs asynchronous EMDK initialization. Confirm successful initialization via the status message.
- Configure Scanner Selection and Settings:
- Select Scanner: Select the scanner (e.g., “2D Barcode Imager”).
- Select Trigger Type: Select either “HARD” or “SOFT” trigger mode.
- Select Decoders: Enable the desired symbologies to scan (e.g., Code128 and EAN13).
- Continuous Scanning: Enable this optional setting to capture multiple barcodes in sequence.
- Activate and Start the Scanner: Tap Start to begin scanning.
- Perform a Scan: Press the trigger or tap the Scan button to initiate a barcode scan. Upon detection, the decoded barcode appears in the Data field, and the scanner returns to the trigger-ready state.