From 4b6653dbbc167439b94541613681c062fed2f087 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期六, 19 十二月 2020 18:33:47 +0800
Subject: [PATCH] 20201219-3
---
HDL-ON_iOS/Scan.cs | 113 +++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 91 insertions(+), 22 deletions(-)
diff --git a/HDL-ON_iOS/Scan.cs b/HDL-ON_iOS/Scan.cs
index aefb43d..1400fb2 100644
--- a/HDL-ON_iOS/Scan.cs
+++ b/HDL-ON_iOS/Scan.cs
@@ -1,38 +1,107 @@
锘縰sing System;
+using HDL_ON_iOS;
using Shared;
using ZXing.Mobile;
-namespace HDL_ON_iOS
+namespace HDL_ON
{
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