FrameScannerDetails.xaml.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Xamarin.Essentials;
  7. using Xamarin.Forms;
  8. using Xamarin.Forms.Xaml;
  9. using XF.Material.Forms.UI.Dialogs;
  10. using ZXing;
  11. namespace PRS.Mobile
  12. {
  13. [XamlCompilation(XamlCompilationOptions.Compile)]
  14. public partial class FrameScannerDetails
  15. {
  16. public FrameScannerDetails()
  17. {
  18. InitializeComponent();
  19. var options = new ZXing.Mobile.MobileBarcodeScanningOptions()
  20. {
  21. PossibleFormats = new List<ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE },
  22. AutoRotate = false,
  23. TryInverted = true,
  24. TryHarder = true,
  25. };
  26. _scanView.Options = options;
  27. _scanView.IsAnalyzing = false;
  28. _scanView.IsScanning = true;
  29. }
  30. public bool IsScanning
  31. {
  32. get => _scanView.IsAnalyzing;
  33. set => _scanView.IsAnalyzing = value;
  34. }
  35. public override void Refresh()
  36. {
  37. }
  38. private bool bProcessing = false;
  39. private async void ScanView_OnScanResult(Result result)
  40. {
  41. if (bProcessing)
  42. return;
  43. bProcessing = true;
  44. Vibration.Vibrate();
  45. using(var dialog = await MaterialDialog.Instance.LoadingDialogAsync(message: "Working"))
  46. {
  47. var task = Task.Run(() => ViewModel.Search(result.Text));
  48. task.Wait();
  49. }
  50. bProcessing = false;
  51. }
  52. }
  53. }