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<string> action;
|
|
public void OpenScan(Action<string> 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<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);
|
// }
|
// });
|
//}
|
}
|
}
|