Xamarin表单条形码扫描仪

Xamarin表单条形码扫描仪,xamarin,xamarin.forms,zxing,barcode-scanner,Xamarin,Xamarin.forms,Zxing,Barcode Scanner,我找不到Xamarin forms条形码扫描仪的任何工作来源。是否有使用zxing库的Xamarin forms条形码扫描仪的工作示例?您可以尝试下面的代码将zxing库/组件添加到解决方案中的所有项目中 public类主页:ContentPage { 字符串消息=”; 公共住宅() { //初始化按钮 按钮btnScan=新按钮 { Text=“开始扫描”, BackgroundColor=颜色。来自RGB(207197159), TextColor=Color.White, 边界半径=5,

我找不到Xamarin forms条形码扫描仪的任何工作来源。是否有使用zxing库的Xamarin forms条形码扫描仪的工作示例?

您可以尝试下面的代码将zxing库/组件添加到解决方案中的所有项目中

public类主页:ContentPage
{
字符串消息=”;
公共住宅()
{
//初始化按钮
按钮btnScan=新按钮
{
Text=“开始扫描”,
BackgroundColor=颜色。来自RGB(207197159),
TextColor=Color.White,
边界半径=5,
平移Y=120
};
//附加单击事件
btnScan.Clicked+=btnScan\u Clicked;
this.Content=newstacklayout
{
BackgroundColor=RGB(150172135)中的颜色,
间距=10,
填充=25,
孩子们=
{
btnScan
}
};
}
异步无效btnScan_已单击(对象发送方,事件参数e)
{
var scanner=新的MobileBarcodeScanner();
scanner.TopText=“将相机保持在条形码附近\n 6英寸处”;
scanner.BottomText=“等待条形码自动扫描!”;
//这将开始扫描
ZXing.Result结果=等待scanner.Scan();
//显示返回的结果。
HandleResult(结果);
}
无效处理结果(ZXing.Result)
{
var msg=“无条形码!”;
如果(结果!=null)
{
msg=“条形码:“+result.Text+”(“+result.BarcodeFormat+”);
}
显示警报(“,消息,“Ok”);
}
}

这很简单

var scanner=new MobileBarcodeScanner();
var result=wait scanner.Scan();
如果(结果==null)
返回;
results.Text=result.Text;
下面是使用XZing库扫描条形码和二维码的工作示例

示例代码:

演示:

您可以使用。但是你需要注意

  • 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);
    }
    
    看起来,上的教程代码不正确

  • 呼叫扫描程序:

    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。该库在github中的以下URL中可用。您将在第一页找到使用说明文档。但我将分三个步骤简要解释如下:

  • 将nuget添加到项目中

  • 创建一个ContentPage。在xaml端,创建按钮或图像按钮。在下面的示例中,我使用的图像按钮如下所示:

    <ImageButton  x:Name="ScanButton"  Source="scannimage.png"  />
    

  • 您可以使用此资源


    但我的意见是,中兴的速度太慢了。我找不到替代解决方案

    它很有效。如何使用自定义视图捕获条形码。?。在此处搜索自定义覆盖。我不知道自定义视图,但使用此自定义覆盖,您可以在顶部添加任何您想要的内容。您可以为此提供一个示例吗?对不起,我没有此示例。但是它在链接中,你可以从那里试试。我已经用NuGet下载了ZXing。我现在有版本0.16.4。没有定义MobileBarcodeScanner。我在包裹里找不到。哪个类替换了它?安装ZXing.Net.Mobile而不仅仅是ZXing.Net.Mobile.Forms修复了v2.4.1的生成错误
    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");
        }
    };