在.NET MAUI中使用ZXing.Net.Maui出现黑屏的问题排查
解决方案
从日志里的[CameraValidator] Verifying camera lens facing on rain, lensFacingInteger: null可以定位问题:扫描器未指定摄像头方向,导致相机无法正确初始化。
按以下步骤修复:
指定摄像头方向
给CameraBarcodeReaderView添加CameraOptions,明确使用后置或前置摄像头:<zxing:CameraBarcodeReaderView x:Name="cameraBarcodeReaderView" Grid.Column="0" Grid.Row="0" HeightRequest="200" WidthRequest="200"> <zxing:CameraBarcodeReaderView.CameraOptions> <zxing:CameraOptions CameraFacing="Back"/> <!-- 需切换前置则改为Front --> </zxing:CameraBarcodeReaderView.CameraOptions> </zxing:CameraBarcodeReaderView>确认权限配置完整
检查Android项目的AndroidManifest.xml,确保已添加必要权限:<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />可选:明确条形码扫描格式
添加BarcodeReaderOptions指定要扫描的格式,提升性能:<zxing:CameraBarcodeReaderView.BarcodeReaderOptions> <zxing:BarcodeReaderOptions Formats="QRCode, Code128" /> </zxing:CameraBarcodeReaderView.BarcodeReaderOptions>可选:主动检查权限
在页面加载时主动验证相机权限状态,确保权限已授予:protected override async void OnAppearing() { base.OnAppearing(); var status = await Permissions.CheckStatusAsync<Permissions.Camera>(); if (status != PermissionStatus.Granted) { status = await Permissions.RequestAsync<Permissions.Camera>(); } if (status == PermissionStatus.Granted) { cameraBarcodeReaderView.IsEnabled = true; } }
完成以上调整后重新运行,黑屏问题即可解决。
内容的提问来源于stack exchange,提问作者Thomas Carlton
相关产品推荐
相关产品推荐

