MAUI 的 ZXing(移动条形码扫描仪)

问题描述 投票:0回答:1

我有一个在xamarin中的项目,我想将其转移到MAUI,但我遇到了一个问题,那就是ZXing.Mobile不适用于MAUI,我已经下载了ZXing.Net.Maui。

问题是我没有这个函数 ZXing.Mobile.MobileBarcodeScanner();我用下面的代码实现它:

async void OnScanButtonClickedL10(object sender, EventArgs e)
{
    var scanner = new ZXing.Mobile.MobileBarcodeScanner();
    var result = await scanner.Scan();

    if (result != null)
    {
        string EanCode = result.Text;
        txtL10EanCode.Text = EanCode;
    }
}

该应用程序所做的就是打开相机,当我扫描代码时它会回来。 ZXing.Net.MAUI 库中是否有类似的内容,或者我总是需要创建一个视图?

maui zxing zxing.net
1个回答
0
投票

是的,您也可以使用ZXing.Net.Maui.Controls,并且需要创建一个

zxing:CameraBarcodeReaderView
来检测或扫描条形码。

以下是实施的详细步骤:

  1. 在 .NET MAUI 应用程序上安装 ZXing.Net.Maui.Controls NuGet 包

  2. 确保首先在 MauiProgram.cs 中初始化插件,请参见下文

// Add the using to the top
using ZXing.Net.Maui;
using ZXing.Net.Maui.Controls;

// ... other code 

public static MauiApp Create()
{
    var builder = MauiApp.CreateBuilder();

    builder
        .UseMauiApp<App>()
        .UseBarcodeReader(); // Make sure to add this line

    return builder.Build();
}
  1. 现在我们只需向应用程序元数据添加正确的权限即可。

安卓

将以下内容添加到

AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" />

iOS

将以下内容添加到

info.plist
文件:

<key>NSCameraUsageDescription</key>
<string>This app uses barcode scanning to...</string>

确保在文件的根目录中添加正确的 XML 命名空间,例如:

xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls"

XAML

<zxing:CameraBarcodeReaderView
x:Name="cameraBarcodeReaderView"
BarcodesDetected="BarcodesDetected" />

手柄检测代码:

public MainPage()
{
       InitializeComponent();

       cameraBarcodeReaderView.Options = new BarcodeReaderOptions
       {
               Formats = BarcodeFormats.OneDimensional,
               AutoRotate = true,
               Multiple = true
        };
}

protected void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
{
           var result = e.Results?.FirstOrDefault();
           if (result is null) return;

           Dispatcher.DispatchAsync(async () =>
           {
               await DisplayAlert("Barcode detected", result.Value, "OK");
           });

}

详细模式可以参考条码扫描

© www.soinside.com 2019 - 2024. All rights reserved.