ZXing.net.mobile 查看无法扫描条码

ZXing.net.mobile view can't scan barcodes

更新:这是一个硬件问题。它适用于较新的 phone。

向项目添加了 ZXing.Net.MobileZXing.Net.Mobile.Forms

扫描仪视图和相机看起来不错。闪光按钮有效。但是 OnScanResult 从未被提出。尝试了各种 DataMatrix、PDF417 和 QR 码。

测试phone是HTC M9。

ScannerPage.xaml

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
             x:Class="MyApp.ScannerPage">
    <ContentPage.Content>
        <Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
            <zxing:ZXingScannerView
                x:Name="ScannerView"/>
            <zxing:ZXingDefaultOverlay
                x:Name="ScannerOverlay"
                TopText="Hold your phone up to the barcode"
                BottomText="Scanning will happen automatically"/>
        </Grid>
    </ContentPage.Content>
</ContentPage>

ScannerPage.xaml.cs

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ScannerPage : ContentPage
{
    public ScannerPage()
    {
        InitializeComponent();

        ScannerView.Options = new ZXing.Mobile.MobileBarcodeScanningOptions
        {
            PossibleFormats = new List<BarcodeFormat>
            {
                BarcodeFormat.DATA_MATRIX,
                BarcodeFormat.PDF_417,
                BarcodeFormat.QR_CODE
            },
            TryHarder = true
        };

        ScannerView.OnScanResult += (result) =>
        {
            var x = 3; // Breakpoint here, never hit

            Device.BeginInvokeOnMainThread(async () =>
            {
                // Stop analysis until we navigate away so we don't keep reading barcodes
                //ScannerView.IsAnalyzing = false;

                // Show an alert
                await DisplayAlert("Scanned Barcode", result.Text, "OK");
            });
        };

        ScannerOverlay.ShowFlashButton = ScannerView.HasTorch;
        ScannerOverlay.FlashButtonClicked += (se, ev) => ScannerView.ToggleTorch();
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();
        ScannerView.IsAnalyzing = true;
        ScannerView.IsScanning = true;
    }

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        ScannerView.IsScanning = false;
    }
}

可能是硬件问题..低分辨率相机?尝试使用更新的智能手机...

您也可以尝试使用 "simplest" 条形码(code128、ean8、ean13...)