ZXing.net.mobile视图无法扫描条形码

时间:2018-05-18 19:34:44

标签: c# xamarin xamarin.forms zxing zxing.net

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

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

扫描仪视图和相机看起来很好。 Flash按钮有效。但OnScanResult永远不会被提出。尝试了各种DataMatrix,PDF417和QR码。

测试手机是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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

你也可以试试“最简单”的条形码(code128,ean8,ean13 ......)