AVCamManual.AVCamManualCameraViewController.OnCameraChangeClicked C# (CSharp) Метод

OnCameraChangeClicked() приватный Метод

private OnCameraChangeClicked ( NSObject sender ) : void
sender NSObject
Результат void
		void OnCameraChangeClicked (NSObject sender)
		{
			ManualHUD.UserInteractionEnabled = false;
			CameraButton.Enabled = false;
			RecordButton.Enabled = false;
			PhotoButton.Enabled = false;
			CaptureModeControl.Enabled = false;
			HUDButton.Enabled = false;

			sessionQueue.DispatchAsync (() => {
				AVCaptureDevicePosition preferredPosition = AVCaptureDevicePosition.Unspecified;
				switch (VideoDevice.Position) {
				case AVCaptureDevicePosition.Back:
					preferredPosition = AVCaptureDevicePosition.Front;
					break;

				case AVCaptureDevicePosition.Unspecified:
				case AVCaptureDevicePosition.Front:
					preferredPosition = AVCaptureDevicePosition.Back;
					break;
				}

				AVCaptureDevice newVideoDevice = GetDeviceFrom (AVMediaType.Video, preferredPosition);
				AVCaptureDeviceInput newVideoDeviceInput = AVCaptureDeviceInput.FromDevice (newVideoDevice);

				Session.BeginConfiguration ();

				// Remove the existing device input first, since using the front and back camera simultaneously is not supported
				Session.RemoveInput (VideoDeviceInput);
				if (Session.CanAddInput (newVideoDeviceInput)) {
					subjectAreaDidChangeToken?.Dispose ();
					subjectAreaDidChangeToken = NSNotificationCenter.DefaultCenter.AddObserver (AVCaptureDevice.SubjectAreaDidChangeNotification, SubjectAreaDidChange, newVideoDevice);

					Session.AddInput (newVideoDeviceInput);
					VideoDeviceInput = newVideoDeviceInput;
					VideoDevice = newVideoDeviceInput.Device;
				} else {
					Session.AddInput (VideoDeviceInput);
				}

				if (movieFileOutput != null) {
					AVCaptureConnection connection = movieFileOutput.ConnectionFromMediaType (AVMediaType.Video);
					if (connection.SupportsVideoStabilization)
						connection.PreferredVideoStabilizationMode = AVCaptureVideoStabilizationMode.Auto;
				}

				Session.CommitConfiguration ();

				DispatchQueue.MainQueue.DispatchAsync (() => {
					ConfigureManualHUD ();
					CameraButton.Enabled = true;
					RecordButton.Enabled = (CaptureModeControl.SelectedSegment == (int)CaptureMode.Movie);
					PhotoButton.Enabled = true;
					CaptureModeControl.Enabled = true;
					HUDButton.Enabled = true;
					ManualHUD.UserInteractionEnabled = true;
				});
			});
		}