using System; using HDL_ON_iOS; using Shared; using ZXing.Mobile; using HDL.Shared.IOS.ScanQRCode; namespace HDL_ON { public class Scan { public string TipMsg = ""; public Scan() { } private static Scan ins; public static Scan Ins { get { if (ins == null) { ins = new Scan(); } return ins; } } void ScanResult(string result) { if (result != null) { action?.Invoke(result); } else { action?.Invoke(null); Console.WriteLine("二维码返回值为null"); } } static MobileBarcodeScanner scanner; Action action; public void OpenScan(Action action) { this.action = action; string cancel = "取消"; //string flashText = ""; string titleText = "二维码扫描"; if (Language.CurrentLanguage != "Chinese") { cancel = "Cancel"; //flashText = ""; titleText = "Scan"; } var d1 = new HDLQRCodeScanFinish(ScanResult); HDL.Shared.IOS.ScanQRCode.HDLScanQRCodeSDK.SharedInstance().ScanQRCodeWith(cancel, titleText, d1); //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.CustomOverlay = mZXingOverlayView; // var bOn = false; // mZXingOverlayView.OnCancel += () => // { // 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); // Console.WriteLine("二维码返回值为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 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); // } // }); //} } }