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 ?
Réponses
Trop de publicités?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");
}
}
Vous pouvez utiliser ZXing.Net.Mobile.Forms . Mais attention.
-
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.
-
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
-
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); }
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