繁体   English   中英

iOS上Xamarin Forms中的ZXing条形码扫描器无法读取条形码

[英]ZXing barcode scanner in Xamarin Forms on iOS doesn't read barcodes

我正在针对Xamarin Forms PCL项目进行开发,该项目针对需要一些基本条形码扫描功能的Android和iOS。

在遵循本教程并参考本指南的情况下,我使用ZXing.Net.Mobile程序包的表单版本启动并运行,它在Android上运行良好。 但是,在iOS上会启动摄像头,但永远不会触发OnScanResult事件。

我已经在运行多个不同版本(从8.0-10.3到任何版本)的多个iOS设备上对其进行了测试,并充分考虑了我能想到的所有内容,同时还引用了其示例项目。 ZXing.Net.MobileZXing.Net.Mobile.Forms nuget软件包已安装在所有项目中。

这是我的扫描器代码,由我主页上的按钮触发触发:

var scanPage = new ZXingScannerPage();

scanPage.OnScanResult += (result) =>
{
    scanPage.IsScanning = false;

    Device.BeginInvokeOnMainThread(async () =>
    {
        await Navigation.PopAsync();
        await DisplayAlert("Scanned Barcode", result.Text, "OK");
    });
};

await Navigation.PushAsync(scanPage);

和AppDelegate.cs:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init();

    global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();

    LoadApplication(new App());

    return base.FinishedLaunching(app, options);
}

经过两天的奋战,我觉得自己已经走到了尽头。 还有其他人遇到过类似的问题吗? 感谢您的指导!


编辑1

这是单击按钮触发上述代码时的设备日志输出(仅“消息”列)。 打开相机并指向各种条形码时,不会添加任何日志项目。 我在这里看不到任何可疑之处,但也许有人可以呢?

  • PERF:Alloc AVCaptureVideoPreviewLayer花了14.14毫秒。
  • AppleH4CamIn :: power_on_hardware
  • AppleH4CamIn :: ISP_SelectBestMIPIFrequencyIndex_gated-频道:0,索引:0
  • 开始扫描
  • AppleH4CamIn :: setPowerStateGated:1
  • ZXingScannerView.Setup()花了0.167毫秒。
  • ASL发件人统计
  • AppleH4CamIn :: ISP_FlushInactiveDARTMappings:0x00000000
  • AppleH4CamIn :: ISP_SelectBestMIPIFrequencyIndex_gated-频道:0,索引:0

编辑2

我从github存储库中运行了Xamarin Forms PCL示例,并且在iOS上遇到了同样的问题,因为相机可以很好地打开,但是从未读取条形码。 因此,我认为问题一定出在我的Visual Studio和/或Xamarin安装程序上。 我正在稳定的Xamarin频道上运行Visual Studio 2015社区。

add this on ios

protected override void OnAppearing()
        {
            base.OnAppearing();
            qrcode.IsScanning = true;
        }`enter code here`

        protected override void OnDisappearing()
        {
            qrcode.IsScanning = false;
            base.OnDisappearing();

        }

我终于把它作为这个项目的起点。 这只是使用ZXing的基本条形码扫描实现,但无论出于何种原因,我最终都可以在iOS上读取条形码。

这可能是与版本有关的问题,但是我无法缩小范围。

编辑

我在Xamarin论坛上发布了相同的问题: https : //forums.xamarin.com/discussion/comment/272209#Comment_272209

似乎答案已降级为ZXing 2.1.47版。 几个月来我没有对库做任何工作,所以我没有测试新版本。

尝试使用此:

scanPage.IsAnalyzing = true;

IsAnalyzingIsScanning不同。

我和您一样面临同样的问题。 但是在使用IsAnalyzing = true; 它是固定的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM