using Avalonia; using Avalonia.Android; using Avalonia.Platform; using InABox.Avalonia.Platform.Barcodes; using InABox.Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reactive; namespace InABox.Avalonia.Platform.Android.Barcodes; public class Android_CameraViewControl : ICameraViewControl { public Logger? Logger { get; set; } public IPlatformHandle CreateControl(CameraView view, IPlatformHandle parent) { var parentContext = (parent as AndroidViewControlHandle)?.View.Context ?? global::Android.App.Application.Context; var cameraManager = new CameraManager(view, parentContext); view.GetPropertyChangedObservable(CameraView.CameraEnabledProperty).Subscribe(args => cameraManager.UpdateCameraEnabled()); view.GetPropertyChangedObservable(CameraView.PauseScanningProperty).Subscribe(args => cameraManager._pauseScanning = args.GetNewValue()); view.GetPropertyChangedObservable(CameraView.ForceInvertedProperty).Subscribe(args => cameraManager._forceInverted = args.GetNewValue()); view.GetPropertyChangedObservable(CameraView.ForceFrameCaptureProperty).Subscribe(args => cameraManager._forceFrameCapture = args.GetNewValue()); view.GetPropertyChangedObservable(CameraView.CaptureNextFrameProperty).Subscribe(args => cameraManager._captureNextFrame = args.GetNewValue()); view.GetPropertyChangedObservable(CameraView.AimModeProperty).Subscribe(args => cameraManager._aimMode = args.GetNewValue()); view.GetPropertyChangedObservable(CameraView.ViewfinderModeProperty).Subscribe(args => cameraManager._viewFinderMode = args.GetNewValue()); if (view.CameraEnabled) { cameraManager.UpdateCameraEnabled(); } return new AndroidViewControlHandle(cameraManager.BarcodeView); } }