BarcodeScanning.Native.Maui 1.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package BarcodeScanning.Native.Maui --version 1.0.2
NuGet\Install-Package BarcodeScanning.Native.Maui -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BarcodeScanning.Native.Maui" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BarcodeScanning.Native.Maui --version 1.0.2
#r "nuget: BarcodeScanning.Native.Maui, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install BarcodeScanning.Native.Maui as a Cake Addin
#addin nuget:?package=BarcodeScanning.Native.Maui&version=1.0.2

// Install BarcodeScanning.Native.Maui as a Cake Tool
#tool nuget:?package=BarcodeScanning.Native.Maui&version=1.0.2

BarcodeScanning.Native.Maui

Barcode scanning library based on native platform APIs for barcode detection:

  1. Google ML Kit
  2. Apple Vision framework

This library was inspired by existing MAUI barcode scanning libraries: BarcodeScanner.Mobile & Zxing.Net.MAUI, but comes with many code improvements and uses native ML APIs on both Android and iOS.

Key features

  1. Uses native APIs for maximal performance and barcode readability,
  2. Optimized for continuous scanning,
  3. Ability to scan multiple barcodes in one frame,
  4. Ability to pool multiple scans for better scanning consistency,
  5. Transformed barcode bounding box for on-screen positioning,
  6. Code-behind and MVVM compatibility,
  7. Android ony - Abillity to invert source image to scan natively unsupported inverted barcodes, but at a performance cost.

Usage

  1. Install Nuget package,
  2. Initialize the plugin in your MauiProgram.cs:
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            ...
            .UseBarcodeScanning();
            ...
    
        return builder.Build();
    }
    
  3. Add required permissions:
    Android
    Edit AndroidManifest.xml file (under the Platforms\Android folder) and add the following permissions inside of the manifest node:
    <uses-permission android:name="android.permission.CAMERA" />
    
    iOS
    Edit info.plist file (under the Platforms\iOS folder) and add the following permissions inside of the dict node:
    <key>NSCameraUsageDescription</key>
    <string>Enable camera for barcode scanning.</string>
    
    And ask for permission from user in your code:
    await Methods.AskForRequiredPermissionAsync();
    
  4. In XAML, add correct namespace, for example:
    xmlns:scanner="clr-namespace:BarcodeScanning;assembly=BarcodeScanning.Native.Maui"
    
  5. Set the CameraEnabled property to true in XAML, code behind or ViewModel to start the camera.
  6. Listen to OnDetectionFinished event in Code-behind or bind OnDetectionFinishedCommand property to a Command in your ViewModel.
  7. As a best practice set the CameraEnabled property to false in OnDisappearing() method override in your Page.

An example can be found in BarcodeScanning.Test project.

Supported barcode symbologies

Android

1D: Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E; 2D: Aztec, Data Matrix, PDF417, QR Code

iOS

1D: Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, GS1 DataBar, ITF, UPC-E; 2D: Aztec, Data Matrix, MicroPDF417, MicroQR, PDF417, QR Code

Bindable properties

A list of bindable properties with descriptions can be found in CameraView.cs source file.

TODO Windows and macOS support

Windows and macOS are currently unsupported, but support can be added in the future. Vision framework is compatible with macOS so this implementation wouldn't be difficult. For Windows, barcode detection could be supported through Zxing.Net project.

Product Compatible and additional computed target framework versions.
.NET net8.0-android34.0 is compatible.  net8.0-ios17.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on BarcodeScanning.Native.Maui:

Package Downloads
OpenMAUIAndroid

Uma lib de leitura de código de barras que agrupa os mais diversos SDKs e EMDKs de fabricantes de coletores de dados, e gerencia tudo de forma automática.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.5.0 1,297 4/20/2024
1.4.3 794 4/11/2024
1.4.2 839 4/4/2024
1.4.1 1,542 3/22/2024
1.4.0 498 3/17/2024
1.3.1 955 3/13/2024
1.3.0 108 3/13/2024
1.2.5 623 3/8/2024
1.2.4 5,151 1/24/2024
1.2.3 1,001 1/9/2024
1.2.2 743 12/27/2023
1.2.1 323 12/20/2023
1.2.0 318 12/17/2023
1.1.1 283 12/6/2023
1.1.0 252 12/4/2023
1.0.3 240 11/27/2023
1.0.2 411 11/24/2023
1.0.1 252 11/16/2023
0.9.3 1,827 4/19/2023
0.9.1 208 3/31/2023