You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中使用ZXing.Net.Maui识别一维条码无响应问题

问题排查与修复

1. 处理函数逻辑完全颠倒

你的BarcodesDetected方法存在致命逻辑错误:当识别到条码(first != null)时直接返回,导致后续弹窗代码根本不会执行。

原错误代码:

private void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
{
    var first = e.Results?.FirstOrDefault();
    if (first != null)
        return; // 逻辑完全颠倒
    
    Dispatcher.DispatchAsync(async () =>
    {
        await DisplayAlert("Barcode detected", first.Value, "OK");
    });
}

修正后的代码:

private void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
{
    var first = e.Results?.FirstOrDefault();
    if (first == null) // 未识别到条码时直接返回
        return;
    
    Dispatcher.DispatchAsync(async () =>
    {
        await DisplayAlert("Barcode detected", first.Value, "OK");
        // 可选:识别后暂停扫描,避免重复触发
        cameraBarcodeReaderView.IsScanning = false;
    });
}

2. 确保开启扫描功能

默认情况下CameraBarcodeReaderView的IsScanning属性为false,即便相机画面正常,也不会主动识别条码。需在页面初始化时开启扫描:

修改构造函数:

public CameraPage()
{
    InitializeComponent();
    
    cameraBarcodeReaderView.Options = new BarcodeReaderOptions
    {
       Formats = BarcodeFormats.OneDimensional,
       TryInverted = true,
       AutoRotate = true
    };
    // 开启条码扫描
    cameraBarcodeReaderView.IsScanning = true;
}

3. 确认平台权限配置(可选)

虽然相机画面正常,仍建议确认权限配置是否正确:

  • Android:在Platforms/Android/AndroidManifest.xml中添加相机权限
    <uses-permission android:name="android.permission.CAMERA" />
    
  • Windows:在Platforms/Windows/Package.appxmanifest中启用摄像头权限
    <Capabilities>
        <Capability Name="internetClient" />
        <DeviceCapability Name="webcam" />
    </Capabilities>
    

内容的提问来源于stack exchange,提问作者Fabrizio Ciavatta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:00:22