From 92906312dfc5f55b6ef364f4d9da0d5768c00782 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期二, 22 十二月 2020 16:43:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/CJL' into NewFilePath
---
HDL-ON_Android/Scan.cs | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 101 insertions(+), 19 deletions(-)
diff --git a/HDL-ON_Android/Scan.cs b/HDL-ON_Android/Scan.cs
index 9c5dd3d..01cbcb3 100644
--- a/HDL-ON_Android/Scan.cs
+++ b/HDL-ON_Android/Scan.cs
@@ -1,4 +1,5 @@
锘縰sing System;
+using System.IO;
using Shared;
using ZXing.Mobile;
@@ -9,36 +10,117 @@
public Scan()
{
}
-
+ static MobileBarcodeScanner scanner;
public static void OpenScan(Action<string> action)
{
- (Shared.Application.Activity as BaseActivity).SetCamera((obj) => {
+ string cancel = "鍙栨秷";
+ string flashText = "";
+ string titleText = "浜岀淮鐮佹壂鎻�";
+ if (Language.CurrentLanguage != "Chinese")
+ {
+ cancel = "Cancel";
+ flashText = "";
+ titleText = "Scan";
+ }
+
+ ((BaseActivity)Shared.Application.Activity).SetCamera(async (obj) =>
+ {
if (obj)
{
- var scanner = new MobileBarcodeScanner { };
- // ZXing
- scanner.UseCustomOverlay = false;
- // 搴曢儴涓や釜鎸夐挳鏂囧瓧
- scanner.FlashButtonText = "";//"璇嗗埆";
- scanner.CancelButtonText = Language.CurrentLanguage == "Chinese" ? "鍙栨秷" : "Cancel";
+ if (scanner == null)
+ {
+ MobileBarcodeScanner.Initialize(Shared.Application.Activity.Application);
+ var mZXingCustomScanView = new ZXingCustomScanView(Shared.Application.Activity.Application);
+ mZXingCustomScanView.cancelTextView.Text = cancel;
+ mZXingCustomScanView.flashTextView.Text = flashText;
+ mZXingCustomScanView.titleTextView.Text = titleText;
+ var bOn = false;
+ scanner = new ZXing.Mobile.MobileBarcodeScanner()
+ {
+ UseCustomOverlay = true,
+ CustomOverlay = mZXingCustomScanView
+ };
- // 鏂规涓婏紝涓嬫柟鏂囧瓧鎻愮ず
- scanner.TopText = Language.CurrentLanguage == "Chinese" ? "璇峰皢鏉″舰鐮佸鍑嗘柟妗嗗唴" : "Please align the bar code in the scan box";
- scanner.BottomText = "";
+ mZXingCustomScanView.OnCancel += () =>
+ {
- // 寤舵椂涓夌鑷姩鎵
- var opt = new MobileBarcodeScanningOptions();
- opt.DelayBetweenContinuousScans = 3000;
- scanner.ScanContinuously(opt, (obj2) => {
- scanner.Cancel();
- action?.Invoke(obj2.Text);
- });
+ scanner?.Cancel();
+ };
+
+ mZXingCustomScanView.OnTorch += () =>
+ {
+ bOn = !bOn;
+ scanner?.Torch(bOn);
+ };
+ }
+
+ var result = await scanner.Scan();
+
+ if (result != null)
+ action?.Invoke(result.Text);
+ else
+ action?.Invoke(null);
+
}
else
{
- action?.Invoke("");
+ 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 bitmap = barcodeWriter.Write(text);
+ using (var stream = new MemoryStream())
+ {
+ bitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 100, stream); // this is the diff between iOS and Android
+ stream.Position = 0;
+ return stream.ToArray();
+ }
+ }
+
+ //public static void OpenScan1(Action<string> action)
+ //{
+ // (Shared.Application.Activity as BaseActivity).SetCamera((obj) => {
+ // if (obj)
+ // {
+ // var scanner = new MobileBarcodeScanner { };
+ // // 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, (obj2) => {
+ // scanner.Cancel();
+ // action?.Invoke(obj2.Text);
+ // });
+ // }
+ // else
+ // {
+ // action?.Invoke("");
+ // }
+ // });
+ //}
}
}
--
Gitblit v1.8.0