.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
相关产品推荐
相关产品推荐

