今天寫一篇條形碼掃描的文章,使用的是ZXing。
實現非常簡單,下面一起來看一下步驟。
首先在項目中導入包:

接下來直接可以使用了:
直接在你的ViewController中聲明變量:
MobileBarcodeScanner scanner;初始化變量:scanner = new MobileBarcodeScanner(this.NavigationController);下面的代碼是在一個按鈕點擊事件中調用掃碼的:Btn.TouchUpInside += async (sender, e) => { // ZXing scanner.UseCustomOverlay = false; // 底部兩個按鈕文字 scanner.FlashButtonText = "識別"; scanner.CancelButtonText = "取消"; // 方框上,下方文字提示 scanner.TopText = "請將條形碼對準方框內"; scanner.BottomText = "確認后按下右下角識別按鈕"; //Start scanning var result = await scanner.Scan(); // 處理結果 HandleScanResult(result); };下面是對結果簡單的處理:void HandleScanResult(ZXing.Result result) { string msg = ""; if (result != null && !string.IsNullOrEmpty(result.Text)) msg = "掃描結果: " + result.Text; else msg = "你取消了!"; this.InvokeOnMainThread(() => { var av = new UIAlertView("Barcode Result", msg, null, "OK", null); av.Show(); }); }最后貼一張掃描的效果圖
差點忘了,添加攝像頭的權限:PRivacy - Photo Library Usage Description。
上面實現的掃描條形碼呢,需要我們手動點擊識別按鈕來識別,下面將調用的代碼稍微改動一下,添加一個三秒延時自動識別:
Btn.TouchUpInside += (sender, e) => { // ZXing scanner.UseCustomOverlay = false; // 底部兩個按鈕文字 scanner.FlashButtonText = "識別"; scanner.CancelButtonText = "取消"; // 方框上,下方文字提示 scanner.TopText = "請將條形碼對準方框內"; scanner.BottomText = "確認后按下右下角識別按鈕"; // 延時三秒自動掃秒 var opt = new MobileBarcodeScanningOptions(); opt.DelayBetweenContinuousScans = 3000; scanner.ScanContinuously(opt, HandleScanResult); };好了,這樣子調用即可達到自動識別的效果。寫完了后遇到一個坑,如上面截圖,公司給的條形碼都是紙質打印的,當時剛寫完后一直掃不上,于是開始懷疑ZXing性能的問題了。
后來換了幾個條形碼都沒有問題。
最后在仔細看了看紙質的條形碼打印的質量有問題。
大家遇到掃不上的時候先檢查一下條形碼有沒有問題。
新聞熱點
疑難解答