5 votes

Xamarin forms Barcode Scanner

Je n'ai pas trouvé de source fonctionnelle pour le scanner de code-barres de Xamarin forms. Existe-t-il un exemple fonctionnel de scanner de codes-barres Xamarin forms utilisant la bibliothèque zxing ?

8voto

Akash Amin Points 1658

Vous pouvez essayer le code ci-dessous. Ajouter la bibliothèque/composant zxing à tous les projets de la solution

public class Home : ContentPage
{
    string message = "";
    public Home()
    {
        //Intialize the button
        Button btnScan = new Button
        {
            Text = "Start Scan",
            BackgroundColor = Color.FromRgb(207, 197, 159),
            TextColor = Color.White,
            BorderRadius = 5,
            TranslationY = 120
        };
        //Attach the click event
        btnScan.Clicked += btnScan_Clicked;

        this.Content = new StackLayout
        {
            BackgroundColor = Color.FromRgb(150, 172, 135),
            Spacing = 10,
            Padding = 25,
            Children =
            {
                btnScan
            }
        };
    }

    async void btnScan_Clicked(object sender, EventArgs e)
    {
        var scanner = new MobileBarcodeScanner();
        scanner.TopText = "Hold the camera up to the barcode\nAbout 6 inches away";
        scanner.BottomText = "Wait for the barcode to automatically scan!";

        //This will start scanning
        ZXing.Result result = await scanner.Scan();

        //Show the result returned.
        HandleResult(result);
    }

    void HandleResult(ZXing.Result result)
    {
        var msg = "No Barcode!";
        if (result != null)
        {
            msg = "Barcode: " + result.Text + " (" + result.BarcodeFormat + ")";
        }

        DisplayAlert("", msg, "Ok");
    }
}

0voto

Vous pouvez utiliser ZXing.Net.Mobile.Forms . Mais attention.

  1. La version actuelle de ZXing.Net.Mobile.Forms est 2.4.1. J'ai utilisé cette version et le build a échoué sur le projet Xamarin.Forms.Android =>. Application Crash .

    \=> j'ai utilisé la version 2.3.2 . Il fonctionne bien.

  2. Dans le fichier MainActivity.cs du projet Android, vous ajoutez le code suivant :

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    Il semble que le code du tutoriel sur aquí n'est pas correct

  3. Scanner d'appel :

    private async void BtnScan_OnClicked(object sender, EventArgs e)
    {
        ZXingScannerPage scanPage = new ZXingScannerPage();
        scanPage.OnScanResult += (result) =>
        {
            scanPage.IsScanning = false;
            Device.BeginInvokeOnMainThread(() =>
            {
                Navigation.PopAsync();
                EtInputCode.Text = "Code: " + result.Text;
            });
        };
        await Navigation.PushAsync(scanPage);
    }

0voto

hnabbasi Points 116

C'est assez simple,

var scanner = new MobileBarcodeScanner();
var result = await scanner.Scan();

if(result == null) 
   return;

results.Text = result.Text;

Voici un exemple fonctionnel de XamarinForms qui scanne les codes-barres et les codes QR à l'aide de la bibliothèque XZing.

Exemple de code : https://github.com/hnabbasi/CheckInator

Démonstration : https://www.youtube.com/watch?v=OdPinaBLbvE

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X