CameraStateObserver.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using AndroidX.Camera.Core;
  2. using AndroidX.Lifecycle;
  3. using InABox.Avalonia.Platform.Barcodes;
  4. namespace InABox.Avalonia.Platform.Android.Barcodes;
  5. internal class CameraStateObserver : Java.Lang.Object, IObserver
  6. {
  7. private readonly CameraManager _cameraManager;
  8. private readonly CameraView _cameraView;
  9. internal CameraStateObserver(CameraManager cameraManager, CameraView cameraView)
  10. {
  11. _cameraManager = cameraManager;
  12. _cameraView = cameraView;
  13. }
  14. public void OnChanged(Java.Lang.Object? value)
  15. {
  16. if (value is not null && _cameraView is not null && _cameraManager is not null)
  17. {
  18. if (value is IZoomState zoomState)
  19. {
  20. _cameraView.CurrentZoomFactor = zoomState.ZoomRatio;
  21. _cameraView.MinZoomFactor = zoomState.MinZoomRatio;
  22. _cameraView.MaxZoomFactor = zoomState.MaxZoomRatio;
  23. _cameraManager.UpdateZoomFactor();
  24. }
  25. if (value is CameraState cameraState)
  26. {
  27. _cameraManager.OpenedCameraState = cameraState;
  28. }
  29. }
  30. }
  31. }