Zxing Xamarin Forms

358 views Asked by At

I am trying to read barcode through Xamarin Forms Application but unfortunately couldn't read the barcode. What I want is when scanner is opened, I want the results real time on same screen. I am using ZXing 2.2.9 nuget as 4.2.1 is not supported. Below is my code.

<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="WarehouseApp.Views.ScanAndReceive.ScanReceive">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="4*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <zxing:ZXingScannerView x:Name="zxing" 
                                VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"/>
        <zxing:ZXingDefaultOverlay TopText="Hold your phone up to the barcode"
                                   BottomText="Scanning will happen automatically"/>
        <Label x:Name="lblResult"
               Grid.Row="1"
               TextColor="Red"
               HorizontalOptions="Center"
               VerticalOptions="Center"
               HorizontalTextAlignment="Center"
               VerticalTextAlignment="Center"/>
    </Grid>
</ContentPage>
    public ScanReceive()
        {
            InitializeComponent();
            ZXing.Net.Mobile.Forms.ZXingScannerPage scanPage = new ZXing.Net.Mobile.Forms.ZXingScannerPage();
            scanPage.IsScanning = true;
            scanPage.OnScanResult += (result) => Device.BeginInvokeOnMainThread(() => {
                lblResult.Text = "abc";
            });
            //BtnScan_OnClicked();
        }
        protected override void OnAppearing()
        {
            base.OnAppearing();
            lblResult.Text = "test";
        }

MainActivity.cs

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        ZXing.Net.Mobile.Forms.Android.Platform.Init();
        LoadApplication(new App());
        Window.SetStatusBarColor(Android.Graphics.Color.Rgb(236, 178, 66));
    }

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
    {
        Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

this is what I have tried so far...

0

There are 0 answers