我正在运行于 .NET 8 的 MAUI 应用程序中实现二维码扫描器。
该应用程序目前适用于Android,随后将移植到IOS。
因此,我决定使用ZXing.Net.Maui
并遵循此处的文档:https://github.com/Redth/ZXing.Net.Maui#barcode-scanning
我的问题是,二维码仍然无法被检测到,并且BarcodesDetected()
如果使用断点测试,也无法访问它。
我是否遗漏了什么?
我确实找到了这篇文章(ZXing for MAUI (MobileBarcodeScanner)),它似乎正在实施与我相同的过程,但我这边没有成功。
MauiProgram.cs
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
)
.UseMauiCommunityToolkit()
.UseFFImageLoading()
.UseBarcodeReader()
var app = builder.Build();
return app;
}
AndroidManifest.xaml
:
<uses-permission android:name="android.permission.CAMERA"/>
View.xaml
:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls"
x:Class="Project.Views.View">
<Grid>
<zxing:CameraBarcodeReaderView
x:Name="cameraBarcodeReaderView"
BarcodesDetected="BarcodesDetected"
IsDetecting="True"
CameraLocation="Rear"
IsEnabled="True"/>
</Grid>
</ContentPage>
view.xaml.cs
:
public partial class View : ContentPage
{
public View()
{
InitializeComponent();
CheckCameraPermission();
cameraBarcodeReaderView.Options = new BarcodeReaderOptions
{
Formats = BarcodeFormats.OneDimensional,
AutoRotate = true,
Multiple = true
};
}
private void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
{
foreach (var barcode in e.Results)
Console.WriteLine($"Barcodes: {barcode.Format} -> {barcode.Value}");
}
}