提问人:ape 提问时间:10/8/2023 更新时间:10/8/2023 访问量:223
.NET MAUI 条码扫描器不适用于一维码
.NET MAUI barcode scanner does not work for 1D codes
问:
我在使用 Camera.MAUI 库扫描代码时遇到了问题。当我扫描二维码时,一切都正常。当我想扫描一维码时,扫描仪没有检测到它。 我尝试了来自互联网和产品的各种条形码(例如超高温灭菌牛奶条形码)。它不会每次都检测到此代码。
我在 .net 7.0 中创建应用程序。下面是代码。
*.xaml 文件:
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:cv="clr-namespace:Camera.MAUI;assembly=Camera.MAUI"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="InvScanPro.Views.ScannerPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30"
VerticalOptions="Center">
<cv:CameraView
x:Name="CameraView"
HeightRequest="450"
WidthRequest="350"
CamerasLoaded="CameraView_CamerasLoaded"
BarCodeDetectionEnabled="True"
BarcodeDetected="CameraView_BarcodeDetected"/>
</VerticalStackLayout>
</ScrollView>
</toolkit:Popup>
*.xaml.cs文件:
public partial class ScannerPage : Popup
{
private bool _isScanning;
public ScannerPage()
{
InitializeComponent();
InitializeBarCodeOptions();
}
private void InitializeBarCodeOptions()
{
CameraView.BarCodeOptions = new BarcodeDecodeOptions
{
AutoRotate = true,
PossibleFormats =
{
ZXing.BarcodeFormat.QR_CODE,
ZXing.BarcodeFormat.All_1D
}
};
}
private void CameraView_CamerasLoaded(object sender, EventArgs e)
{
if (CameraView.Cameras.Count <= 0) return;
CameraView.Camera = CameraView.Cameras.First();
MainThread.BeginInvokeOnMainThread(async () =>
{
await CameraView.StopCameraAsync();
await CameraView.StartCameraAsync();
});
}
private void CameraView_BarcodeDetected(object sender, Camera.MAUI.ZXingHelper.BarcodeEventArgs args)
{
if (_isScanning) return;
MainThread.BeginInvokeOnMainThread(async () =>
{
_isScanning = true;
Vibration.Default.Vibrate(new TimeSpan(0, 0, 0, 0, 100));
await CameraView.StopCameraAsync();
await CloseAsync(args.Result[0].Text);
});
}
}
MauiProgram.cs
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.UseMauiCameraView()
.UseMauiCommunityToolkit();
答: 暂无答案
评论