| | |
| | | using System; |
| | | using System.IO; |
| | | using Android.Content; |
| | | using Shared; |
| | | using ZXing.Mobile; |
| | | |
| | | namespace HDL_ON |
| | | { |
| | | public class Scan |
| | | public class Scan: Java.Lang.Object,HDL_ON_Android.ScanActivity.ScanResult |
| | | { |
| | | public Scan() |
| | | { |
| | | } |
| | | static MobileBarcodeScanner scanner; |
| | | public static void OpenScan(Action<string> action) |
| | | |
| | | private static Scan ins; |
| | | |
| | | 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 |
| | | { |
| | | action?.Invoke(null); |
| | | Action action1 = () => { |
| | | Intent intent = new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings); |
| | | intent.AddFlags(ActivityFlags.NewTask); |
| | | Android.Net.Uri uri = Android.Net.Uri.FromParts("package", Application.Activity.PackageName, null); |
| | | intent.SetData(uri); |
| | | Application.Activity.StartActivity(intent); |
| | | }; |
| | | if (string.IsNullOrEmpty(TipMsg)) |
| | | { |
| | | if (Language.CurrentLanguage == "Chinese") |
| | | { |
| | | new HDL_ON.UI.PublicAssmebly().TipOptionMsg(StringId.Tip, "相机访问权限已被拒绝,请前往系统设置打开相关权限。", action1); |
| | | } |
| | | else |
| | | { |
| | | new HDL_ON.UI.PublicAssmebly().TipOptionMsg(StringId.Tip, "Camera access has been denied. Please go to system settings to open relevant permissions.", action1); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | new HDL_ON.UI.PublicAssmebly().TipOptionMsg(StringId.Tip, TipMsg,action1,45); |
| | | TipMsg = string.Empty; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | 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, |
| | |
| | | // } |
| | | // }); |
| | | //} |
| | | |
| | | |
| | | //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); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |