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