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