ZXing不在Android上扫描(Xamarin应用)

时间:2017-11-12 08:27:13

标签: xamarin qr-code barcode zxing

我使用下面的代码扫描我的Xamarin中的QR码。我目前正在三星Galaxy(Android)上测试它,我能够查看相机流,但它没有扫描任何二维码。

如何解决此问题以获取QR扫描结果?

public void Scan()
{
try
{
scanner.Options = new MobileBarcodeScanningOptions()
{
UseFrontCameraIfAvailable = false, //update later to come from settings
PossibleFormats = new List(),
TryHarder = true,
AutoRotate = false,
TryInverted = true,
DelayBetweenContinuousScans = 2000,
};

    scanner.VerticalOptions = LayoutOptions.FillAndExpand;
    scanner.HorizontalOptions = LayoutOptions.FillAndExpand;

    // scanner.IsVisible = false;

    scanner.Options.PossibleFormats.Add(BarcodeFormat.QR_CODE);
    // scanner.Options.PossibleFormats.Add(BarcodeFormat.DATA_MATRIX);
    // scanner.Options.PossibleFormats.Add(BarcodeFormat.EAN_13);


    scanner.OnScanResult += (result) => {
        // Stop scanning
        scanner.IsAnalyzing = false;
        scanner.IsScanning = false;

        if (scanner.IsScanning)
        {
            scanner.AutoFocus();
        }

        // Pop the page and show the result
        Device.BeginInvokeOnMainThread(async () => {
            if (result != null)
            {
                await DisplayAlert("Scan Value", result.Text, "OK");
            }
        });
    };

    mainGrid.Children.Add(scanner, 0, 1);
}
catch (Exception ex)
{
    DisplayAlert("Scan Value", ex.ToString(), "Error");
}
}

1 个答案:

答案 0 :(得分:0)

也许你正在使用错误的事件处理程序,或者错过了一个事件,而且相机也从未聚焦:

由于这段代码,条件永远不会成立:

    scanner.IsScanning = false;

    if (scanner.IsScanning)
    {
        scanner.AutoFocus();
    }