2017-05-02 178 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;它是固定的。