From 2bec9c838d2d688025698de8ec1de401ffd7dd1f Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 11 八月 2020 14:13:55 +0800
Subject: [PATCH] 20200811

---
 HDL-ON_iOS/Scan.cs |  112 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 91 insertions(+), 21 deletions(-)

diff --git a/HDL-ON_iOS/Scan.cs b/HDL-ON_iOS/Scan.cs
index 0d60418..ad6fef3 100644
--- a/HDL-ON_iOS/Scan.cs
+++ b/HDL-ON_iOS/Scan.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using HDL_ON_iOS;
 using Shared;
 using ZXing.Mobile;
 
@@ -6,33 +7,102 @@
 {
     public class Scan
     {
+
         public Scan()
         {
         }
-        public static void OpenScan(Action<string> action)
+
+        static MobileBarcodeScanner scanner;
+        public static async void OpenScan(Action<string> action)
         {
+            string cancel = "鍙栨秷";
+            string flashText = "";
+            string titleText = "浜岀淮鐮佹壂鎻�";
+            if (Language.CurrentLanguage != "Chinese")
+            {
+                cancel = "Cancel";
+                flashText = "";
+                titleText = "Scan";
+            }
 
-            var scanner = new MobileBarcodeScanner(BaseViewController.Instance) { };
-            // ZXing  
-            scanner.UseCustomOverlay = false;
-            // 搴曢儴涓や釜鎸夐挳鏂囧瓧  
-            scanner.FlashButtonText = "";//"璇嗗埆";
-            scanner.CancelButtonText = Language.CurrentLanguage == "Chinese" ? "鍙栨秷" : "Cancel";
+            if (scanner == null)
+            {
+                var mZXingOverlayView = new ZXingOverlayView(cancel, flashText, titleText);
+                scanner = new MobileBarcodeScanner(AppDelegate.rootViewController) { FlashButtonText = flashText, TopText = titleText, BottomText = "", CancelButtonText = cancel };
+                scanner.UseCustomOverlay = true;
 
-            // 鏂规涓婏紝涓嬫柟鏂囧瓧鎻愮ず  
-            //scanner.TopText = Language.CurrentLanguage == "Chinese" ? "璇峰皢鏉″舰鐮佸鍑嗘柟妗嗗唴" : "Please align the bar code in the scan box";
-            scanner.BottomText = "";
-
-            // 寤舵椂涓夌鑷姩鎵  
-            var opt = new MobileBarcodeScanningOptions();
-            opt.DelayBetweenContinuousScans = 3000;
-            scanner.ScanContinuously(opt, (obj) => {
-                scanner.Cancel();
-                if (action != null)
+                scanner.CustomOverlay = mZXingOverlayView;
+                var bOn = false;
+                mZXingOverlayView.OnCancel += () =>
                 {
-                    action(obj.Text);
-                }
-            });
+
+                    scanner?.Cancel();
+                };
+
+                mZXingOverlayView.OnTorch += () =>
+                {
+                    bOn = !bOn;
+                    scanner?.Torch(bOn);
+                };
+
+            }
+
+            var result = await scanner.Scan();
+
+            if (result != null)
+                action?.Invoke(result.Text);
+            else
+                action?.Invoke(null);
         }
+
+        public static byte[] BytesFromText(string text, int width = 300, int height = 300)
+        {
+            var barcodeWriter = new ZXing.Mobile.BarcodeWriter
+            {
+                Format = ZXing.BarcodeFormat.QR_CODE,
+                Options = new ZXing.Common.EncodingOptions
+                {
+                    Width = width,
+                    Height = height,
+                    Margin = 0
+                }
+            };
+
+            barcodeWriter.Renderer = new ZXing.Mobile.BitmapRenderer();
+            var uiImage = barcodeWriter.Write(text);
+            var data = uiImage.AsJPEG();
+
+            var resultBytes = new byte[data.Length];
+            System.Runtime.InteropServices.Marshal.Copy(data.Bytes, resultBytes, 0, resultBytes.Length);
+
+            return resultBytes;
+        }
+
+
+        //public static void OpenScan(Action<string> action)
+        //{
+
+        //    var scanner = new MobileBarcodeScanner(BaseViewController.Instance) { };
+        //    // ZXing  
+        //    scanner.UseCustomOverlay = false;
+        //    // 搴曢儴涓や釜鎸夐挳鏂囧瓧  
+        //    scanner.FlashButtonText = "";//"璇嗗埆";
+        //    scanner.CancelButtonText = Language.CurrentLanguage == "Chinese" ? "鍙栨秷" : "Cancel";
+
+        //    // 鏂规涓婏紝涓嬫柟鏂囧瓧鎻愮ず  
+        //    //scanner.TopText = Language.CurrentLanguage == "Chinese" ? "璇峰皢鏉″舰鐮佸鍑嗘柟妗嗗唴" : "Please align the bar code in the scan box";
+        //    scanner.BottomText = "";
+
+        //    // 寤舵椂涓夌鑷姩鎵  
+        //    var opt = new MobileBarcodeScanningOptions();
+        //    opt.DelayBetweenContinuousScans = 3000;
+        //    scanner.ScanContinuously(opt, (obj) => {
+        //        scanner.Cancel();
+        //        if (action != null)
+        //        {
+        //            action(obj.Text);
+        //        }
+        //    });
+        //}
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0