如何在应用启动上初始化条形码扫描仪



我对我的Xamarin跨平台应用程序有一个要求,该应用程序在App启动一旦设置为读取代码。完成扫描后,将会响起。我完成的是按钮单击扫描仪启动,其读取代码,然后我必须再次按下按钮才能重新启动。

public HomePage()
        {
            Button scanBtn = new Button
            {
                Text = "Scan Barcode",
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };
            scanBtn.Clicked += async (sender, args) =>
            {
                var scanResult = await Acr.BarCodes.BarCodes.Instance.Read();
                if (!scanResult.Success)
                {
                    await this.DisplayAlert("Alert ! ", "Sorry ! n Failed to read the Barcode !", "OK");
                }
                else
                {
                    var endpoint = new EndpointAddress("http://192.168.15.33/SMS/WebServices/SMSService.svc");
                    var binding = new BasicHttpBinding
                    {
                        Name = "basicHttpBinding",
                        MaxBufferSize = 2147483647,
                        MaxReceivedMessageSize = 2147483647
                    };
                    TimeSpan timeout = new TimeSpan(0, 0, 30);
                    binding.SendTimeout = timeout;
                    binding.OpenTimeout = timeout;
                    binding.ReceiveTimeout = timeout;
                    _client = new SMSServiceClient(binding, endpoint);
                    _client.ValidateStudentAsync("123-admin");
                    _client.ValidateStudentCompleted += _client_ValidateStudentCompleted; ;
                    // await this.DisplayAlert("Scan Successful !", String.Format("Barcode Format : {0} n Barcode Value : {1}", scanResult.Format, scanResult.Code), "OK");
                }
            };
            Content = new StackLayout
            {
                Children = {
                    scanBtn
                }
            };
        }

和app.cs

 public class App : Application
    {
        public App()
        {
            // The root page of your application
            MainPage = new HomePage();
        }
        protected override void OnStart()
        {
            MainPage = new HomePage();
        }
        protected override void OnSleep()
        {
            MainPage = new HomePage();
        }
        protected override void OnResume()
        {
            MainPage = new HomePage();
        }
    }

您可以使用zxing.net.mobile来读取QR码。要初始化此插件,您应该调用方法来启动每个项目(Android,iOS,UWP),例如:

用于MainActivity中的Android.cs类呼叫:

ZXing.Net.Mobile.Forms.Droid.Platform.Init();

在appdeletage.cs类中iOS call

ZXing.Net.Mobile.Forms.iOS.Platform.Init();

最后读取QR代码:

private async void Scan() {
        var scanPage = new ZXingScannerPage();
        scanPage.OnScanResult += (result) => {
            // Stop scanning
            scanPage.IsScanning = false;
            // Pop the page and show the result
            Device.BeginInvokeOnMainThread( async () => {
                await Navigation.PopAsync();
                await DisplayAlert("Scanned Barcode", result.Text, "OK");
            });
        };
        // Navigate to our scanner page
        await Navigation.PushAsync(scanPage);
}

最新更新