ZXing.Net.Mobile 调用 Scan() 方法时出现条码扫描器错误

ZXing.Net.Mobile Barcode scanner error when I call Scan() method

我正在尝试将条码扫描仪应用到我的 windows 通用应用程序中。 我正在使用 ZXing.Net.Mobile

var _scanner = new MobileBarcodeScanner(this.Dispatcher);                    
var result = await _scanner.Scan();

然后,Visual Studio停在这一行

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();

那么,如何解决这个问题呢?

I don't get an exception, the VS just highlights the line mentioned above. I believe the problem is that I don't have ZXing.Net.Mobile.WindowsUniversal in the references. but I can't find it in NuGet.

你可以点击vs的"Tools"然后选择标签"NuGet Package Manager"然后select"Manage NuGet Package for Solution",在"Browse"标签中搜索"ZXing.Net.Mobile",如果你开发的是Uwp应用,选择"ZXing.Net.Mobile",如果你使用Xamarin开发,选择"ZXing.Net.Mobile.Forms",window,[=37]右边=] 您的项目并单击安装。

这是我安装完这个包的图片:

我已经在按钮点击事件中测试了您的代码,您发布的代码可以在安装此包后进行调试。

但是如果我在本机调试,同样的错误,这个是可能的,因为我的电脑上没有扫描仪可以初始化,所以我在手机模拟器上测试,就不会出现这个错误.

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();

其他一些问题也可能导致,如果我的回答不能解决您的问题,您可以添加评论。

I think the exception is "Access is denied"

这是您对问题的最新评论,当您想在应用中使用 ZXing 时,您需要打开项目的清单文件,选择 "Capabilities" 标签,然后在左侧启用 "Internet(Client)"、"Microphone" 和 "Webcam" 功能。刚刚测试过,如果你没有启用这个功能,在手机模拟器上也会出现同样的错误。这也是这个问题的可能原因。

必须在UWP主页设置。

        this.InitializeComponent();
        this.NavigationCacheMode = NavigationCacheMode.Enabled;            ZXing.Net.Mobile.Forms.WindowsUniversal.ZXingScannerViewRenderer.Init();

然后在 Xamarin 表单或本机应用程序页面中单击按钮

        var options = new ZXing.Mobile.MobileBarcodeScanningOptions();           
        options.TryHarder=true;                        
        var scanner = new ZXing.Mobile.MobileBarcodeScanner();             
        scanner.TopText="Hold For Scanning";
        scanner.BottomText="Tally Scan";
        var result = await scanner.Scan(options);                             
        if (result != null) {
            updateListWithText (result.Text);
       }    

@hatim 使用前需要先初始化扫描仪。

在开始使用扫描仪之前将此行添加到您的代码中。你只需要这样做一次。所以把它放在你的主要 activity

     `   MobileBarcodeScanner.Initialize(Application);`