2017-05-02 183 views
1

我在Xamarin工作表单PCL项目针对Android和iOS设备上需要一些基本的条形码扫描功能。斑马线条形码扫描器无法读取条形码

我得到的东西了,并与形式的版本ZXing.Net.Mobile包的下面this tutorial和引用this guide运行,它在Android上的伟大工程。然而,iOS上的摄像头出现,但OnScanResult事件从来没有发射。

我测试过它上运行多个不同版本的几个iOS设备(从8.0的任何地方 - 10.3),并与所有我能想到的拨弄,引用他们的样本项目,以及。 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
  • StartScanning
  • AppleH4CamIn :: setPowerStateGated:1
  • ZXingScannerView.Setup()把0.167毫秒。
  • ASL发件人统计
  • AppleH4CamIn :: ISP_FlushInactiveDARTMappings:00000000
  • AppleH4CamIn :: ISP_SelectBestMIPIFrequencyIndex_gated - 信道:0,指数:0

编辑2

我跑的样品Xamarin形式PCL从github repo时遇到iOS上同样的问题与摄像机开孔罚款,但没有条形码读过。因此,我认为这个问题必须与我的Visual Studio和/或Xamarin设置。我在稳定的Xamarin频道上运行Visual Studio 2015社区。

+0

实际上是否使用调试器来验证OnScanResult没有被调用,或者只是依靠警报/导航告诉你? – Jason

+0

我已经通过它了,我没有看到它被调用。我还在运行时启动设备日志,并且一切看起来都不错,没有错误触发。 –

回答

0

我终于得到它与this project工作作为一个起点。这只是使用斑马线基本的条形码扫描的实现,但不管是什么原因,我终于可以阅读iOS上的条形码。

这可能是一个版本相关的问题,但我无法缩小它的范围。

编辑

我张贴在Xamarin论坛同样的问题:https://forums.xamarin.com/discussion/comment/272209#Comment_272209

看来答案降级到斑马线版本2.1.47。我几个月没有在图书馆做任何工作,所以我没有测试新版本。

0
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(); 

     } 
+0

我搞砸了,手动设置'IsScanning = true'没有任何成功。我将设备日志添加到了我的帖子中,我相信“开始扫描”这一行表示它正按预期工作。 –

0

尝试使用这样的:

scanPage.IsAnalyzing = true; 
+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17116958) – Adonis

-1

IsAnalyzingIsScanning不同。

我面临与你一样的问题。但使用后IsAnalyzing = true;它是固定的。