Android_CameraViewControl.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Avalonia;
  2. using Avalonia.Android;
  3. using Avalonia.Platform;
  4. using InABox.Avalonia.Platform.Barcodes;
  5. using InABox.Core;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Reactive;
  12. namespace InABox.Avalonia.Platform.Android.Barcodes;
  13. public class Android_CameraViewControl : ICameraViewControl
  14. {
  15. public Logger? Logger { get; set; }
  16. public IPlatformHandle CreateControl(CameraView view, IPlatformHandle parent)
  17. {
  18. var parentContext = (parent as AndroidViewControlHandle)?.View.Context
  19. ?? global::Android.App.Application.Context;
  20. var cameraManager = new CameraManager(view, parentContext);
  21. view.GetPropertyChangedObservable(CameraView.CameraEnabledProperty).Subscribe(args => cameraManager.UpdateCameraEnabled());
  22. view.GetPropertyChangedObservable(CameraView.PauseScanningProperty).Subscribe(args => cameraManager._pauseScanning = args.GetNewValue<bool>());
  23. view.GetPropertyChangedObservable(CameraView.ForceInvertedProperty).Subscribe(args => cameraManager._forceInverted = args.GetNewValue<bool>());
  24. view.GetPropertyChangedObservable(CameraView.ForceFrameCaptureProperty).Subscribe(args => cameraManager._forceFrameCapture = args.GetNewValue<bool>());
  25. view.GetPropertyChangedObservable(CameraView.CaptureNextFrameProperty).Subscribe(args => cameraManager._captureNextFrame = args.GetNewValue<bool>());
  26. view.GetPropertyChangedObservable(CameraView.AimModeProperty).Subscribe(args => cameraManager._aimMode = args.GetNewValue<bool>());
  27. view.GetPropertyChangedObservable(CameraView.ViewfinderModeProperty).Subscribe(args => cameraManager._viewFinderMode = args.GetNewValue<bool>());
  28. if (view.CameraEnabled)
  29. {
  30. cameraManager.UpdateCameraEnabled();
  31. }
  32. return new AndroidViewControlHandle(cameraManager.BarcodeView);
  33. }
  34. }