Xamarin 表单条码扫描器
Xamarin forms Barcode Scanner
我找不到 Xamarin 表单条码扫描器的任何工作源。是否有任何使用 zxing 库的 Xamarin 表单条码扫描器的工作示例?
您可以试试下面的代码。 将 zxing library/component 添加到解决方案中的所有项目
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");
}
}
非常简单,
var scanner = new MobileBarcodeScanner();
var result = await scanner.Scan();
if(result == null)
return;
results.Text = result.Text;
这是 XamarinForms 使用 XZing 库扫描条形码和 QR 码的工作示例。
您可以使用 ZXing.Net.Mobile.Forms。不过你注意了。
ZXing.Net.Mobile.Forms 当前版本为 2.4.1。我使用了这个版本,但在 Xamarin.Forms.Android 项目上构建失败。 => 使应用程序崩溃。
=> 我使用的版本是 2.3.2。工作正常。
在 Android 项目文件 MainActivity.cs 中,添加以下代码:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
看来,here上的教程代码不正确
呼叫扫描器:
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);
}
您可以使用 ZXing.Net.Mobile nuget。该库在以下 URL https://github.com/Redth/ZXing.Net.Mobile 中的 github 中可用。您会在第一页找到使用文档。但我将分 3 个步骤简要解释如下:
将 nuget 添加到您的项目
创建内容页面。在 xaml 一侧,创建一个按钮或图像按钮。在下面的例子中,我使用像这样的图像按钮:
<ImageButton x:Name="ScanButton" Source="scannimage.png" />
在代码绑定中,将以下代码放在构造函数或OnAppearing()
方法中:
ScanButton.Clicked += async (sender, e) =>
{
var scanner = new ZXing.Mobile.MobileBarcodeScanner();
var result = await scanner.Scan();
if (result != null)
{
await DisplayAlert("Code barre", "Scanned Barcode: " + result.Text, "Ok");
}
};
我找不到 Xamarin 表单条码扫描器的任何工作源。是否有任何使用 zxing 库的 Xamarin 表单条码扫描器的工作示例?
您可以试试下面的代码。 将 zxing library/component 添加到解决方案中的所有项目
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");
}
}
非常简单,
var scanner = new MobileBarcodeScanner();
var result = await scanner.Scan();
if(result == null)
return;
results.Text = result.Text;
这是 XamarinForms 使用 XZing 库扫描条形码和 QR 码的工作示例。
您可以使用 ZXing.Net.Mobile.Forms。不过你注意了。
ZXing.Net.Mobile.Forms 当前版本为 2.4.1。我使用了这个版本,但在 Xamarin.Forms.Android 项目上构建失败。 => 使应用程序崩溃。
=> 我使用的版本是 2.3.2。工作正常。
在 Android 项目文件 MainActivity.cs 中,添加以下代码:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) { global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults); }
看来,here上的教程代码不正确
呼叫扫描器:
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); }
您可以使用 ZXing.Net.Mobile nuget。该库在以下 URL https://github.com/Redth/ZXing.Net.Mobile 中的 github 中可用。您会在第一页找到使用文档。但我将分 3 个步骤简要解释如下:
将 nuget 添加到您的项目
创建内容页面。在 xaml 一侧,创建一个按钮或图像按钮。在下面的例子中,我使用像这样的图像按钮:
<ImageButton x:Name="ScanButton" Source="scannimage.png" />
在代码绑定中,将以下代码放在构造函数或
OnAppearing()
方法中:ScanButton.Clicked += async (sender, e) => { var scanner = new ZXing.Mobile.MobileBarcodeScanner(); var result = await scanner.Scan(); if (result != null) { await DisplayAlert("Code barre", "Scanned Barcode: " + result.Text, "Ok"); } };