ScannerPage.xaml.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Comal.Classes;
  2. using InABox.Clients;
  3. using InABox.Core;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using Xamarin.Essentials;
  10. using Xamarin.Forms;
  11. using ZXing;
  12. using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
  13. using XF.Material.Forms.UI.Dialogs;
  14. using comal.timesheets.QAForms;
  15. using InABox.Mobile;
  16. using LogType = InABox.Core.LogType;
  17. namespace comal.timesheets
  18. {
  19. public class ScannerPageItemScannedArgs : EventArgs
  20. {
  21. public String Text { get; set; }
  22. public ScannerPageItemScannedArgs(String text)
  23. {
  24. Text = text;
  25. }
  26. }
  27. public partial class ScannerPage
  28. {
  29. bool bProcessing = false;
  30. public Func<ScannerPageItemScannedArgs, Task> ItemScanned;
  31. public ScannerPage()
  32. {
  33. InitializeComponent();
  34. var options = new ZXing.Mobile.MobileBarcodeScanningOptions()
  35. {
  36. PossibleFormats = new List<ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE },
  37. AutoRotate = false,
  38. TryInverted = true,
  39. TryHarder = true,
  40. };
  41. _scanView.Options = options;
  42. _scanView.IsAnalyzing = false;
  43. _scanView.IsScanning = true;
  44. }
  45. protected override void OnAppearing()
  46. {
  47. base.OnAppearing();
  48. _scanView.IsAnalyzing = true;
  49. }
  50. protected override void OnDisappearing()
  51. {
  52. _scanView.IsAnalyzing = false;
  53. base.OnDisappearing();
  54. }
  55. public async void _scanView_OnScanResult(ZXing.Result result)
  56. {
  57. if (bProcessing)
  58. return;
  59. bProcessing = true;
  60. Vibration.Vibrate();
  61. if (ItemScanned != null)
  62. await ItemScanned?.Invoke(new ScannerPageItemScannedArgs(result.Text))!;
  63. bProcessing = false;
  64. }
  65. }
  66. }