带有 xamarin 表单的 zxing 扫描仪适用于倒置的移动设备

zxing scanner with xamarin forms works with mobile upside down

我已经在我的 Xamarin 应用程序中成功实现了 Zxing 条码扫描器。我用它来扫描二维码。扫描仅在某些时候成功。主要是扫描仪无法扫描。没有异常抛出,扫描页面继续显示二维码,不触发OnScanResult。 但是,如果我将手机倒置,它始终能够成功扫描。可能是哪里出了问题?

我已经尝试将 AutoRotate 标志设置为两个 true/false 但行为是相同的。

这是扫描码:

            var options = new MobileBarcodeScanningOptions
            {
                AutoRotate = true,
                UseFrontCameraIfAvailable = false,
                TryHarder = true,                    
            };

            options.PossibleFormats.Clear();
            options.PossibleFormats.Add(ZXing.BarcodeFormat.QR_CODE);

            var overlay = new ZXingDefaultOverlay
            {
                TopText = "Please scan QR code",
                BottomText = "Align the QR code within the frame"
            };

            var QRScanner = new ZXingScannerPage(options, overlay) { IsScanning = true, IsAnalyzing = true };

            QRScanner.OnScanResult += async (qrcode) =>
            {
                // Stop scanning
                QRScanner.IsAnalyzing = false;
                QRScanner.IsScanning = false;

                // Pop the page and show the result
                Device.BeginInvokeOnMainThread(() =>
                {
                    Navigation.PopModalAsync(true);
                });

                ApiHelper.ApiResult apiresult = await ApiHelper.MarkAttendanceAsync(qrcode.Text);
                if (apiresult.success == true)
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        DependencyService.Get<IToastService>().ShortAlert(apiresult.message);
                    });
                }
                else
                {
                    Device.BeginInvokeOnMainThread(async () =>
                    {
                        await DisplayAlert("Error", apiresult.message, "OK");
                    });
                }

            };

            await Navigation.PushModalAsync(QRScanner);

这是我正在使用的示例二维码。可以看到二维码上下都没有干扰元素:

我过去也遇到过类似的问题

请尝试一些实验。

把二维码倒过来试试。这将在您的 phone 中隔离与自动轮换相关的问题。还可以尝试扫描一些其他标准 QR 码,您可以在 Google 图片等中找到它们。该应用在那里可用吗?

如果不是,请尝试增加编码字符串的大小。我观察到 ZXing 有时会遇到较小的代码。这就是为我修复它的原因。