From 161255054f5a4ae7f0d86e314f864dddf573d666 Mon Sep 17 00:00:00 2001 From: Rob Little Date: Sun, 22 Aug 2021 14:45:01 -0700 Subject: [PATCH 1/7] add scanning focus area --- Samples/Sample.Android/FragmentActivity.cs | 8 +- Samples/Sample.Uwp/Sample.Uwp.csproj | 2 +- ZXing.Net.Mobile.sln | 248 +++++++++++++++++- .../CameraAccess/CameraAnalyzer.android.cs | 36 ++- .../CameraAccess/CameraController.android.cs | 2 + .../MobileBarcodeScanningOptions.shared.cs | 7 + ZXing.Net.Mobile/Performance.shared.cs | 3 + ZXing.Net.Mobile/ScanningArea.cs | 129 +++++++++ ZXing.Net.Mobile/ZXing.Net.Mobile.csproj | 6 + 9 files changed, 431 insertions(+), 10 deletions(-) create mode 100644 ZXing.Net.Mobile/ScanningArea.cs diff --git a/Samples/Sample.Android/FragmentActivity.cs b/Samples/Sample.Android/FragmentActivity.cs index 9a87e8134..d6b0218b6 100644 --- a/Samples/Sample.Android/FragmentActivity.cs +++ b/Samples/Sample.Android/FragmentActivity.cs @@ -53,9 +53,10 @@ void Scan() var opts = new MobileBarcodeScanningOptions { PossibleFormats = new List { - ZXing.BarcodeFormat.QR_CODE + ZXing.BarcodeFormat.All_1D }, - CameraResolutionSelector = availableResolutions => + ScanningArea = ScanningArea.From(0f, 0.49f, 1f, 0.51f), + CameraResolutionSelector = availableResolutions => { foreach (var ar in availableResolutions) @@ -63,7 +64,8 @@ void Scan() Console.WriteLine("Resolution: " + ar.Width + "x" + ar.Height); } return null; - } + }, + AutoRotate = true }; scanFragment.StartScanning(result => diff --git a/Samples/Sample.Uwp/Sample.Uwp.csproj b/Samples/Sample.Uwp/Sample.Uwp.csproj index e72e127c4..885c4fee0 100644 --- a/Samples/Sample.Uwp/Sample.Uwp.csproj +++ b/Samples/Sample.Uwp/Sample.Uwp.csproj @@ -11,7 +11,7 @@ Sample.Uwp en-US UAP - 10.0.18362.0 + 10.0.19041.0 10.0.17763.0 14 512 diff --git a/ZXing.Net.Mobile.sln b/ZXing.Net.Mobile.sln index b33050cd7..2ca35f138 100644 --- a/ZXing.Net.Mobile.sln +++ b/ZXing.Net.Mobile.sln @@ -48,6 +48,13 @@ Global AppStore|iPhoneSimulator = AppStore|iPhoneSimulator AppStore|x64 = AppStore|x64 AppStore|x86 = AppStore|x86 + Debug - Reduced|Any CPU = Debug - Reduced|Any CPU + Debug - Reduced|ARM = Debug - Reduced|ARM + Debug - Reduced|ARM64 = Debug - Reduced|ARM64 + Debug - Reduced|iPhone = Debug - Reduced|iPhone + Debug - Reduced|iPhoneSimulator = Debug - Reduced|iPhoneSimulator + Debug - Reduced|x64 = Debug - Reduced|x64 + Debug - Reduced|x86 = Debug - Reduced|x86 Debug|Any CPU = Debug|Any CPU Debug|ARM = Debug|ARM Debug|ARM64 = Debug|ARM64 @@ -92,6 +99,20 @@ Global {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x64.Build.0 = Release|Any CPU {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x86.ActiveCfg = Release|Any CPU {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x86.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug - Reduced|x86.Build.0 = Debug|Any CPU {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -148,6 +169,20 @@ Global {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x64.Build.0 = Release|Any CPU {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x86.ActiveCfg = Release|Any CPU {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x86.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug - Reduced|x86.Build.0 = Debug|Any CPU {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|Any CPU.Build.0 = Debug|Any CPU {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -218,6 +253,27 @@ Global {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.ActiveCfg = Release|Any CPU {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.Build.0 = Release|Any CPU {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|Any CPU.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|ARM.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|ARM64.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|iPhone.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|x64.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|x86.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug - Reduced|x86.Deploy.0 = Debug|Any CPU {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU @@ -278,8 +334,21 @@ Global {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|x64.ActiveCfg = AppStore|iPhone {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|x86.ActiveCfg = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|Any CPU.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|Any CPU.Build.0 = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|ARM.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|ARM.Build.0 = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|ARM64.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|ARM64.Build.0 = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|iPhone.ActiveCfg = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|iPhone.Build.0 = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|x64.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|x64.Build.0 = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|x86.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug - Reduced|x86.Build.0 = Release|iPhoneSimulator {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.Deploy.0 = Debug|iPhoneSimulator {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|ARM.ActiveCfg = Debug|iPhone {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator @@ -340,6 +409,27 @@ Global {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x86.ActiveCfg = Release|x86 {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x86.Build.0 = Release|x86 {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x86.Deploy.0 = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|Any CPU.ActiveCfg = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|Any CPU.Build.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|Any CPU.Deploy.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|ARM.ActiveCfg = Debug|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|ARM.Build.0 = Debug|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|ARM.Deploy.0 = Debug|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|ARM64.ActiveCfg = Debug|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|ARM64.Build.0 = Debug|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|ARM64.Deploy.0 = Debug|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|iPhone.ActiveCfg = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|iPhone.Build.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|iPhone.Deploy.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|iPhoneSimulator.Deploy.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|x64.ActiveCfg = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|x64.Build.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|x64.Deploy.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|x86.ActiveCfg = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|x86.Build.0 = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug - Reduced|x86.Deploy.0 = Debug|x86 {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|Any CPU.ActiveCfg = Debug|x86 {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|Any CPU.Build.0 = Debug|x86 {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|Any CPU.Deploy.0 = Debug|x86 @@ -400,6 +490,20 @@ Global {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x64.Build.0 = Debug|Any CPU {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x86.ActiveCfg = Debug|Any CPU {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x86.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug - Reduced|x86.Build.0 = Debug|Any CPU {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|Any CPU.Build.0 = Debug|Any CPU {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -470,6 +574,27 @@ Global {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x86.ActiveCfg = Release|Any CPU {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x86.Build.0 = Release|Any CPU {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x86.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|Any CPU.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|ARM.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|ARM64.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|iPhone.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|x64.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|x86.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug - Reduced|x86.Deploy.0 = Debug|Any CPU {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|Any CPU.Build.0 = Debug|Any CPU {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|Any CPU.Deploy.0 = Debug|Any CPU @@ -540,8 +665,21 @@ Global {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x64.Build.0 = Release|iPhone {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x86.ActiveCfg = Release|iPhone {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x86.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|Any CPU.Build.0 = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|ARM.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|ARM.Build.0 = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|ARM64.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|ARM64.Build.0 = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|iPhone.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|iPhone.Build.0 = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|x64.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|x64.Build.0 = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|x86.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug - Reduced|x86.Build.0 = Debug|iPhoneSimulator {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|Any CPU.Build.0 = Debug|iPhone {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|ARM.ActiveCfg = Debug|iPhone {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|ARM64.ActiveCfg = Debug|iPhone {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|iPhone.ActiveCfg = Debug|iPhone @@ -602,6 +740,27 @@ Global {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x86.ActiveCfg = Release|x86 {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x86.Build.0 = Release|x86 {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x86.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|Any CPU.ActiveCfg = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|Any CPU.Build.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|Any CPU.Deploy.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|ARM.ActiveCfg = Debug|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|ARM.Build.0 = Debug|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|ARM.Deploy.0 = Debug|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|ARM64.ActiveCfg = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|ARM64.Build.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|ARM64.Deploy.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|iPhone.ActiveCfg = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|iPhone.Build.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|iPhone.Deploy.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|iPhoneSimulator.Deploy.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|x64.ActiveCfg = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|x64.Build.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|x64.Deploy.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|x86.ActiveCfg = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|x86.Build.0 = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug - Reduced|x86.Deploy.0 = Debug|x86 {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|Any CPU.ActiveCfg = Debug|x86 {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|Any CPU.Build.0 = Debug|x86 {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|Any CPU.Deploy.0 = Debug|x86 @@ -658,8 +817,21 @@ Global {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x64.Build.0 = Debug|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x86.ActiveCfg = Debug|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x86.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug - Reduced|x86.Build.0 = Debug|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|Any CPU.Build.0 = Debug|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM.ActiveCfg = Debug|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM.Build.0 = Debug|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM64.ActiveCfg = Debug|Any CPU @@ -686,6 +858,76 @@ Global {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x64.Build.0 = Release|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x86.ActiveCfg = Release|Any CPU {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x86.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|ARM.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|ARM64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|iPhone.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|x64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|x64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|x86.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.AppStore|x86.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|Any CPU.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|Any CPU.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|ARM.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|ARM.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|ARM64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|ARM64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|iPhone.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|iPhone.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|iPhoneSimulator.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|x64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|x64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|x86.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug - Reduced|x86.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|ARM.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|ARM64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|iPhone.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|x64.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|x64.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|x86.ActiveCfg = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Debug|x86.Build.0 = Debug|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|Any CPU.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|ARM.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|ARM.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|ARM64.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|ARM64.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|iPhone.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|iPhone.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|x64.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|x64.Build.0 = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|x86.ActiveCfg = Release|Any CPU + {5DC2808F-8BC1-453B-84A3-4DF0B85CDA04}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs index b8939d2b8..7c9a0257d 100644 --- a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs @@ -127,13 +127,41 @@ void DecodeFrame(FastJavaByteArray fastArray) newHeight = width; } + ZXing.Result result = null; var start = PerformanceCounter.Start(); - LuminanceSource fast = new FastJavaByteArrayYUVLuminanceSource(fastArray, width, height, 0, 0, width, height); // _area.Left, _area.Top, _area.Width, _area.Height); + var scanningRect = scannerHost.ScanningOptions.ScanningArea; + LuminanceSource fast; + + if (scanningRect.IsFullFrame()) + { + fast = new FastJavaByteArrayYUVLuminanceSource(fastArray, width, height, 0, 0, width, + height); // _area.Left, _area.Top, _area.Width, _area.Height); + } + else + { + if (rotate) + scanningRect = scanningRect.RotateCounterClockwise(); + + var left = (int) (width * scanningRect.StartX); + var top = (int) (height * scanningRect.StartY); + var endHeight = (int) (scanningRect.EndY * height) - top; + var endWidth = (int) (scanningRect.EndX * width) - left; + + fast = new FastJavaByteArrayYUVLuminanceSource( + fastArray, + width, + height, + left, + top, + endWidth, + endHeight); + } + if (rotate) fast = fast.rotateCounterClockwise(); - var result = barcodeReader.Decode(fast); + result = barcodeReader.Decode(fast); fastArray.Dispose(); fastArray = null; @@ -142,9 +170,11 @@ void DecodeFrame(FastJavaByteArray fastArray) "Decode Time: {0} ms (width: " + width + ", height: " + height + ", degrees: " + cDegrees + ", rotate: " + rotate + ")"); + PerformanceCounter.Stop(start, null); + if (result != null) { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Barcode Found"); + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, $"Barcode Found {result.Text}"); wasScanned = true; BarcodeFound?.Invoke(result); diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs index 71354dae5..023f9dd81 100644 --- a/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs @@ -236,6 +236,8 @@ void ApplyCameraSettings() parameters.FocusMode = Camera.Parameters.FocusModeContinuousPicture; else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeContinuousVideo)) parameters.FocusMode = Camera.Parameters.FocusModeContinuousVideo; + else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeMacro)) + parameters.FocusMode = Camera.Parameters.FocusModeMacro; else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeAuto)) parameters.FocusMode = Camera.Parameters.FocusModeAuto; else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeFixed)) diff --git a/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs b/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs index 2ab08614a..1af5accd7 100644 --- a/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs +++ b/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs @@ -21,12 +21,19 @@ public MobileBarcodeScanningOptions() InitialDelayBeforeAnalyzingFrames = 300; DelayBetweenContinuousScans = 1000; UseNativeScanning = false; + ScanningArea = ScanningArea.Default; } public CameraResolutionSelectorDelegate CameraResolutionSelector { get; set; } public IEnumerable PossibleFormats { get; set; } + /// + /// Narrow chosen scanning area.
+ /// Works only on Android + ///
+ public ScanningArea ScanningArea { get; set; } + public bool? TryHarder { get; set; } public bool? PureBarcode { get; set; } diff --git a/ZXing.Net.Mobile/Performance.shared.cs b/ZXing.Net.Mobile/Performance.shared.cs index b738644c0..bc6bbd64c 100644 --- a/ZXing.Net.Mobile/Performance.shared.cs +++ b/ZXing.Net.Mobile/Performance.shared.cs @@ -39,6 +39,9 @@ public static void Stop(string guid, string msg) { var elapsed = Stop(guid); + if (msg == null) + return; + if (!msg.Contains("{0}")) msg += " {0}"; diff --git a/ZXing.Net.Mobile/ScanningArea.cs b/ZXing.Net.Mobile/ScanningArea.cs new file mode 100644 index 000000000..d08bb24d5 --- /dev/null +++ b/ZXing.Net.Mobile/ScanningArea.cs @@ -0,0 +1,129 @@ +using System; +using System.Drawing; + +namespace ZXing.Mobile +{ + /// + /// Representation of restricted scanning area in PERCENTAGE. + /// Allowed values: 0 <= value <= 1 AND startY != endY + /// Values of startY and endY are ABSOLUTE to image that means if use values of + /// startY:0.49 and endY:0.51 we will scan only 2% of the whole image + /// starting at 49% and finishing at 51% of the image height. + /// + public class ScanningArea + { + public float StartX { get; } + public float StartY { get; } + public float EndX { get; } + public float EndY { get; } + + ScanningArea(float startX, float startY, float endX, float endY) + { + //if difference between parameters is less than 1% we assume those are equal + if (Math.Abs(startY - endY) < 0.01f) + { + throw new ArgumentException($"Values of {nameof(startY)} and {nameof(endY)} cannot be the same"); + } + + //if difference between parameters is less than 1% we assume those are equal + if (Math.Abs(startX - endX) < 0.01f) + { + throw new ArgumentException($"Values of {nameof(startX)} and {nameof(endX)} cannot be the same"); + } + + //Reverse values instead of throwing argument exception + if (startY > endY) + { + var temp = endY; + endY = startY; + startY = temp; + } + + if (startX > endX) + { + var temp = endX; + endX = startX; + startX = temp; + } + + if (startY < 0) + { + startY = 0; + } + + if (endY > 1) + { + endY = 1; + } + + if (startX < 0) + { + startX = 0; + } + + if (endX > 1) + { + endX = 1; + } + + StartY = startY; + EndY = endY; + StartX = startX; + EndX = endX; + } + + public bool IsFullFrame() + { + if (StartX == 0.0 && StartY == 0.0 && EndX == 1.0 && EndY == 1.0) + return true; + + return false; + } + + public Rectangle GetCroppedRect(Rectangle rectFullImage) + { + Rectangle rectCropped = new Rectangle(); + + rectCropped.X = (int) Math.Floor(rectFullImage.Left * StartX); + rectCropped.Width = (int) Math.Ceiling(rectFullImage.Right * EndX) - rectCropped.X; + + rectCropped.Y = (int) Math.Floor(rectFullImage.Top * StartY); + rectCropped.Height = (int) Math.Ceiling(rectFullImage.Bottom * EndY) - rectCropped.Y; + + return rectCropped; + } + + public ScanningArea RotateCounterClockwise() + { + var startX = StartY; + var startY = EndX; + var endX = EndY; + var endY = StartX; + + if (startY > endY) + { + startY = 1f - startY; + endY = 1 - endY; + } + + if (startX > endX) + { + startX = 1 - startX; + endX = 1 - endX; + } + + return new ScanningArea(startX, startY, endX, endY); + } + + + static ScanningArea _default = new ScanningArea(0f, 0f, 1f, 1f); + + /// + /// Returns value that represents whole image. + /// + public static ScanningArea Default => _default; + + public static ScanningArea From(float startX, float startY, float endX, float endY) => + new ScanningArea(startX, startY, endX, endY); + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj b/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj index 029245573..8375f8e33 100644 --- a/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj +++ b/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj @@ -108,4 +108,10 @@ + + + + + + \ No newline at end of file From 98b60d335a871d8889cbb437564bf73ef2764e7b Mon Sep 17 00:00:00 2001 From: Rob Little Date: Sun, 22 Aug 2021 15:00:39 -0700 Subject: [PATCH 2/7] update to only try to publish from publish master branch (we never push to nuget) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 58f514b62..01ad38578 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: name: Publish NuGet Packages needs: build runs-on: windows-latest - if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'release') + if: github.ref == 'refs/heads/master-publish' && (github.event_name == 'push' || github.event_name == 'release') steps: - name: Download Artifacts uses: actions/download-artifact@v1 From a2d90bc2d8a2c193baf4b816e91fbf20f449af1d Mon Sep 17 00:00:00 2001 From: Rob Little Date: Tue, 28 Dec 2021 15:37:33 -0800 Subject: [PATCH 3/7] fix reference to deleted global object --- .../Android/CameraAccess/CameraAnalyzer.android.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs index 7c9a0257d..8f0589e68 100644 --- a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs @@ -163,9 +163,6 @@ void DecodeFrame(FastJavaByteArray fastArray) result = barcodeReader.Decode(fast); - fastArray.Dispose(); - fastArray = null; - PerformanceCounter.Stop(start, "Decode Time: {0} ms (width: " + width + ", height: " + height + ", degrees: " + cDegrees + ", rotate: " + rotate + ")"); From 9dfd94e935676858873024a0bd9cfd29a707a18e Mon Sep 17 00:00:00 2001 From: Rob Little Date: Fri, 31 Dec 2021 15:46:10 -0800 Subject: [PATCH 4/7] manage camera buffer lifetime don't return camera buffer back to the camera before its done being used in the background task. don't allow multiple listeners to be registered for the preview frame --- .../CameraAccess/CameraAnalyzer.android.cs | 24 +++++++++++++---- .../CameraEventsListener.android.cs | 27 +++++++++++++++++-- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs index b8939d2b8..e27b668d5 100644 --- a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs @@ -9,6 +9,7 @@ public class CameraAnalyzer { readonly CameraController cameraController; readonly CameraEventsListener cameraEventListener; + private bool wasPreviewFrameReadyRegistered = false; Task processingTask; DateTime lastPreviewAnalysis = DateTime.UtcNow; bool wasScanned; @@ -38,13 +39,20 @@ public void ResumeAnalysis() public void ShutdownCamera() { IsAnalyzing = false; - cameraEventListener.OnPreviewFrameReady -= HandleOnPreviewFrameReady; + if (wasPreviewFrameReadyRegistered) + cameraEventListener.OnPreviewFrameReady -= HandleOnPreviewFrameReady; + wasPreviewFrameReadyRegistered = false; cameraController.ShutdownCamera(); } public void SetupCamera() { - cameraEventListener.OnPreviewFrameReady += HandleOnPreviewFrameReady; + // make sure we only register this once, else we will get duplicate events + if (!wasPreviewFrameReadyRegistered) + { + cameraEventListener.OnPreviewFrameReady += HandleOnPreviewFrameReady; + wasPreviewFrameReadyRegistered = true; + } cameraController.SetupCamera(); barcodeReader = scannerHost.ScanningOptions.BuildBarcodeReader(); } @@ -85,7 +93,13 @@ bool CanAnalyzeFrame void HandleOnPreviewFrameReady(object sender, FastJavaByteArray fastArray) { if (!CanAnalyzeFrame) + { + // we can't process this frame right now, so just return the buffer + // back to the camera + cameraController.Camera.AddCallbackBuffer(fastArray); + fastArray.Dispose(); return; + } wasScanned = false; lastPreviewAnalysis = DateTime.UtcNow; @@ -100,6 +114,9 @@ void HandleOnPreviewFrameReady(object sender, FastJavaByteArray fastArray) { Console.WriteLine(ex); } + + cameraController.Camera.AddCallbackBuffer(fastArray); + fastArray.Dispose(); }).ContinueWith(task => { if (task.IsFaulted) @@ -135,9 +152,6 @@ void DecodeFrame(FastJavaByteArray fastArray) var result = barcodeReader.Decode(fast); - fastArray.Dispose(); - fastArray = null; - PerformanceCounter.Stop(start, "Decode Time: {0} ms (width: " + width + ", height: " + height + ", degrees: " + cDegrees + ", rotate: " + rotate + ")"); diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs index e42eaf560..650d5af51 100644 --- a/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs @@ -10,14 +10,37 @@ public class CameraEventsListener : Java.Lang.Object, INonMarshalingPreviewCallb public void OnPreviewFrame(IntPtr data, Camera camera) { + // data represents a CallbackBuffer we previously added + // be sure to return it to the camera when we are done if (data != null && data != IntPtr.Zero) { - using (var fastArray = new FastJavaByteArray(data)) + var fastArray = new FastJavaByteArray(data); + // fastArray now has ownership of data + + // OnPreviewFrameReady is responsible for returning + // the buffer back to the camera. if we return it too + // early, the camera could start using it before we are + // finished with it + if (OnPreviewFrameReady != null) { - OnPreviewFrameReady?.Invoke(this, fastArray); + // the listener is responsible for adding data back as + // a camera buffer and disposing the fastArray. if there + // is more than one listener, then its impossible to know + // which listener is responsible for freeing + if (OnPreviewFrameReady.GetInvocationList().Length > 1) + throw new global::System.InvalidOperationException("too many listeners registered"); + // NOTE: If there are multiple listeners registered, + // then figuring out who is response + OnPreviewFrameReady.Invoke(this, fastArray); + } + else + { + // there were no listeners. return the buffer camera.AddCallbackBuffer(fastArray); + fastArray.Dispose(); } + } } From 2bf2ac9530002ebf2c57c757967fb43e3845ecc9 Mon Sep 17 00:00:00 2001 From: Rob Little Date: Fri, 31 Dec 2021 15:57:21 -0800 Subject: [PATCH 5/7] reverse local change to prevent publish workflow --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 01ad38578..58f514b62 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: name: Publish NuGet Packages needs: build runs-on: windows-latest - if: github.ref == 'refs/heads/master-publish' && (github.event_name == 'push' || github.event_name == 'release') + if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'release') steps: - name: Download Artifacts uses: actions/download-artifact@v1 From 6f5588aa018827806aa5d945d8ad512f033df7df Mon Sep 17 00:00:00 2001 From: Rob Little Date: Thu, 23 May 2024 17:19:08 -0700 Subject: [PATCH 6/7] add a sample app for .net 8 without xamarin --- .gitignore | 1 + Sample.NetAndroid/AndroidManifest.xml | 9 + Sample.NetAndroid/FragmentActivity.cs | 83 ++++++++ Sample.NetAndroid/ImageActivity.cs | 22 +++ Sample.NetAndroid/MainActivity.cs | 114 +++++++++++ .../Resources/AboutResources.txt | 44 +++++ .../Resources/layout/FragmentActivity.xml | 25 +++ .../Resources/layout/ImageActivity.xml | 13 ++ .../Resources/layout/ZxingOverlay.xml | 68 +++++++ .../Resources/layout/activity_main.xml | 40 ++++ .../Resources/mipmap-anydpi-v26/appicon.xml | 4 + .../mipmap-anydpi-v26/appicon_round.xml | 4 + .../Resources/mipmap-anydpi-v26/launcher.png | Bin 0 -> 21226 bytes .../Resources/mipmap-hdpi/appicon.png | Bin 0 -> 2178 bytes .../mipmap-hdpi/appicon_background.png | Bin 0 -> 97 bytes .../mipmap-hdpi/appicon_foreground.png | Bin 0 -> 1276 bytes .../Resources/mipmap-hdpi/launcher.png | Bin 0 -> 5983 bytes .../Resources/mipmap-mdpi/appicon.png | Bin 0 -> 1524 bytes .../mipmap-mdpi/appicon_background.png | Bin 0 -> 92 bytes .../mipmap-mdpi/appicon_foreground.png | Bin 0 -> 1273 bytes .../Resources/mipmap-mdpi/launcher.png | Bin 0 -> 3753 bytes .../Resources/mipmap-xhdpi/appicon.png | Bin 0 -> 3098 bytes .../mipmap-xhdpi/appicon_background.png | Bin 0 -> 100 bytes .../mipmap-xhdpi/appicon_foreground.png | Bin 0 -> 1805 bytes .../Resources/mipmap-xhdpi/launcher.png | Bin 0 -> 8543 bytes .../Resources/mipmap-xxhdpi/appicon.png | Bin 0 -> 4674 bytes .../mipmap-xxhdpi/appicon_background.png | Bin 0 -> 108 bytes .../mipmap-xxhdpi/appicon_foreground.png | Bin 0 -> 1926 bytes .../Resources/mipmap-xxhdpi/launcher.png | Bin 0 -> 14394 bytes .../Resources/mipmap-xxxhdpi/appicon.png | Bin 0 -> 6832 bytes .../mipmap-xxxhdpi/appicon_background.png | Bin 0 -> 117 bytes .../mipmap-xxxhdpi/appicon_foreground.png | Bin 0 -> 2801 bytes .../Resources/mipmap-xxxhdpi/launcher.png | Bin 0 -> 21226 bytes .../values/ic_launcher_background.xml | 4 + .../Resources/values/strings.xml | 5 + Sample.NetAndroid/Sample.NetAndroid.csproj | 26 +++ ZXing.Net.Mobile.sln | 182 +++++++++++------- 37 files changed, 572 insertions(+), 72 deletions(-) create mode 100644 Sample.NetAndroid/AndroidManifest.xml create mode 100644 Sample.NetAndroid/FragmentActivity.cs create mode 100644 Sample.NetAndroid/ImageActivity.cs create mode 100644 Sample.NetAndroid/MainActivity.cs create mode 100644 Sample.NetAndroid/Resources/AboutResources.txt create mode 100644 Sample.NetAndroid/Resources/layout/FragmentActivity.xml create mode 100644 Sample.NetAndroid/Resources/layout/ImageActivity.xml create mode 100644 Sample.NetAndroid/Resources/layout/ZxingOverlay.xml create mode 100644 Sample.NetAndroid/Resources/layout/activity_main.xml create mode 100644 Sample.NetAndroid/Resources/mipmap-anydpi-v26/appicon.xml create mode 100644 Sample.NetAndroid/Resources/mipmap-anydpi-v26/appicon_round.xml create mode 100644 Sample.NetAndroid/Resources/mipmap-anydpi-v26/launcher.png create mode 100644 Sample.NetAndroid/Resources/mipmap-hdpi/appicon.png create mode 100644 Sample.NetAndroid/Resources/mipmap-hdpi/appicon_background.png create mode 100644 Sample.NetAndroid/Resources/mipmap-hdpi/appicon_foreground.png create mode 100644 Sample.NetAndroid/Resources/mipmap-hdpi/launcher.png create mode 100644 Sample.NetAndroid/Resources/mipmap-mdpi/appicon.png create mode 100644 Sample.NetAndroid/Resources/mipmap-mdpi/appicon_background.png create mode 100644 Sample.NetAndroid/Resources/mipmap-mdpi/appicon_foreground.png create mode 100644 Sample.NetAndroid/Resources/mipmap-mdpi/launcher.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xhdpi/appicon.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xhdpi/appicon_background.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xhdpi/appicon_foreground.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xhdpi/launcher.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxhdpi/appicon.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxhdpi/appicon_background.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxhdpi/appicon_foreground.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxhdpi/launcher.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxxhdpi/appicon.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxxhdpi/appicon_background.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxxhdpi/appicon_foreground.png create mode 100644 Sample.NetAndroid/Resources/mipmap-xxxhdpi/launcher.png create mode 100644 Sample.NetAndroid/Resources/values/ic_launcher_background.xml create mode 100644 Sample.NetAndroid/Resources/values/strings.xml create mode 100644 Sample.NetAndroid/Sample.NetAndroid.csproj diff --git a/.gitignore b/.gitignore index 740321b79..348806d54 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ obj [Oo]bj [Dd]ebug*/ [Rr]elease*/ +_ReSharper.Caches/ *.unsuccessfulbuild *.pidb diff --git a/Sample.NetAndroid/AndroidManifest.xml b/Sample.NetAndroid/AndroidManifest.xml new file mode 100644 index 000000000..2c80a349e --- /dev/null +++ b/Sample.NetAndroid/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Sample.NetAndroid/FragmentActivity.cs b/Sample.NetAndroid/FragmentActivity.cs new file mode 100644 index 000000000..0ce4f7eae --- /dev/null +++ b/Sample.NetAndroid/FragmentActivity.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using ZXing.Mobile; +using Android.OS; +using Android.App; +using Android.Widget; +using Android.Content.PM; + +namespace Sample.NetAndroid; + +[Activity(Label = "ZXing.Net.Mobile", Theme = "@style/Theme.AppCompat.Light", ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)] +public class FragmentActivity : AndroidX.Fragment.App.FragmentActivity +{ + ZXingScannerFragment scanFragment; + + protected override void OnCreate(Bundle savedInstanceState) + { + base.OnCreate(savedInstanceState); + + SetContentView(Resource.Layout.FragmentActivity); + } + + protected override void OnResume() + { + base.OnResume(); + + + if (scanFragment == null) + { + scanFragment = new ZXingScannerFragment(); + + SupportFragmentManager.BeginTransaction() + .Replace(Resource.Id.fragment_container, scanFragment) + .Commit(); + } + + Scan(); + } + + public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) => + Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); + + protected override void OnPause() + { + scanFragment?.StopScanning(); + + base.OnPause(); + } + + void Scan() + { + var opts = new MobileBarcodeScanningOptions + { + PossibleFormats = new List { ZXing.BarcodeFormat.All_1D }, + ScanningArea = ScanningArea.From(0f, 0.49f, 1f, 0.51f), + CameraResolutionSelector = availableResolutions => + { + foreach (var ar in availableResolutions) + { + Console.WriteLine("Resolution: " + ar.Width + "x" + ar.Height); + } + + return null; + }, + AutoRotate = true + }; + + scanFragment.StartScanning( + result => + { + // Null result means scanning was cancelled + if (result == null || string.IsNullOrEmpty(result.Text)) + { + Toast.MakeText(this, "Scanning Cancelled", ToastLength.Long).Show(); + return; + } + + // Otherwise, proceed with result + RunOnUiThread(() => Toast.MakeText(this, "Scanned: " + result.Text, ToastLength.Short).Show()); + }, + opts); + } +} diff --git a/Sample.NetAndroid/ImageActivity.cs b/Sample.NetAndroid/ImageActivity.cs new file mode 100644 index 000000000..61fa92240 --- /dev/null +++ b/Sample.NetAndroid/ImageActivity.cs @@ -0,0 +1,22 @@ +namespace Sample.NetAndroid; + +[Activity(Label = "ImageActivity")] +public class ImageActivity : Activity +{ + ImageView imageBarcode; + + protected override void OnCreate(Bundle bundle) + { + base.OnCreate(bundle); + + SetContentView(Resource.Layout.ImageActivity); + + imageBarcode = FindViewById(Resource.Id.imageBarcode); + + var barcodeWriter = + new ZXing.Mobile.BarcodeWriter { Format = ZXing.BarcodeFormat.QR_CODE, Options = new ZXing.Common.EncodingOptions { Width = 300, Height = 300 } }; + var barcode = barcodeWriter.Write("ZXing.Net.Mobile"); + + imageBarcode.SetImageBitmap(barcode); + } +} diff --git a/Sample.NetAndroid/MainActivity.cs b/Sample.NetAndroid/MainActivity.cs new file mode 100644 index 000000000..780e317b6 --- /dev/null +++ b/Sample.NetAndroid/MainActivity.cs @@ -0,0 +1,114 @@ +using Android.Content.PM; +using Android.Views; +using AndroidX.Fragment.App; +using Xamarin.Essentials; +using ZXing.Mobile; + +namespace Sample.NetAndroid +{ + [Activity( + Label = "@string/app_name", + MainLauncher = true, + Theme = "@style/Theme.AppCompat.Light", + ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)] + public class MainActivity : Activity + { + MobileBarcodeScanner scanner; + Button buttonScanCustomView; + Button buttonScanDefaultView; + Button buttonContinuousScan; + Button buttonFragmentScanner; + Button buttonGenerate; + + protected override void OnCreate(Bundle? savedInstanceState) + { + base.OnCreate(savedInstanceState); + + Platform.Init(Application); + + // Set our view from the "main" layout resource + SetContentView(Resource.Layout.activity_main); + + //Create a new instance of our Scanner + scanner = new MobileBarcodeScanner(); + + buttonScanDefaultView = FindViewById