我有一个在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 库中是否有类似的内容,或者我总是需要创建一个视图?
是的,您也可以使用ZXing.Net.Maui.Controls,并且需要创建一个
zxing:CameraBarcodeReaderView
来检测或扫描条形码。
以下是实施的详细步骤:
在 .NET MAUI 应用程序上安装 ZXing.Net.Maui.Controls NuGet 包
确保首先在 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();
}
安卓:
将以下内容添加到
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");
});
}
详细模式可以参考条码扫描