wxr
2023-06-06 592974441a4df95fffd9167c90192da1a390b1c2
HDL-ON_Android/Scan.cs
@@ -6,65 +6,80 @@
namespace HDL_ON
{
    public class Scan
    public class Scan: Java.Lang.Object,HDL_ON_Android.ScanActivity.ScanResult
    {
        public Scan()
        {
        }
        public static string TipMsg = string.Empty;
        private static Scan ins;
        static MobileBarcodeScanner scanner;
        public static void OpenScan(Action<string> action)
        public static Scan Ins
        {
            string cancel = "取消";
            string flashText = "";
            string titleText = "二维码扫描";
            if (Language.CurrentLanguage != "Chinese")
            get
            {
                cancel = "Cancel";
                flashText = "";
                titleText = "Scan";
                if (ins == null)
                {
                    ins = new Scan();
                }
                return ins;
            }
        }
        public string TipMsg = string.Empty;
        Action<string> resultAction;
        static MobileBarcodeScanner scanner;
        public void OpenScan(Action<string> action)
        {
            resultAction = action;
            ((BaseActivity)Shared.Application.Activity).SetCamera(async (obj) =>
            {
                if (obj)
                if (obj)//权限是否打开
                {
                    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
                        };
                        mZXingCustomScanView.OnCancel += () =>
                        {
                        var intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.ScanActivity));
                        Shared.Application.Activity.StartActivity(intent);
                            scanner?.Cancel();
                        };
                        HDL_ON_Android.ScanActivity.InitDdd(this);
                        mZXingCustomScanView.OnTorch += () =>
                        {
                            bOn = !bOn;
                            scanner?.Torch(bOn);
                        };
                        //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;
                        //mZXingCustomScanView.SetMinimumWidth( 1800);
                        //var bOn = false;
                        //scanner = new ZXing.Mobile.MobileBarcodeScanner()
                        //{
                        //    UseCustomOverlay = true,
                        //    CustomOverlay = mZXingCustomScanView
                        //};
                        ////scanner.CustomOverlay.width
                        //mZXingCustomScanView.OnCancel += () =>
                        //{
                        //    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);
                    //var result = await scanner.Scan();
                    //if (result != null)
                    //    action?.Invoke(result.Text);
                    //else
                    //    action?.Invoke(null);
                }
                else
                {
@@ -98,6 +113,8 @@
        public static byte[] BytesFromText(string text, int width = 300, int height = 300)
        {
            if (text == "") return null;
            var barcodeWriter = new ZXing.Mobile.BarcodeWriter
            {
                Format = ZXing.BarcodeFormat.QR_CODE,
@@ -149,5 +166,22 @@
        //        }
        //    });
        //}
        //static void initFromCameraParameters(Android.Graphics.Camera camera)
        //{
        //    //camera.SetLocation
        //}
        public void onResult(string result)
        {
            if (!string.IsNullOrEmpty( result))
                resultAction?.Invoke(result);
            else
                resultAction?.Invoke(null);
        }
    }
}