Example #1
0
        public void WillDisplayCameraCell(CameraCollectionViewCell cell)
        {
            SetupCameraCellIfNeeded(cell);

            if (cell is LivePhotoCameraCell liveCameraCell)
            {
                liveCameraCell.UpdateWithCameraMode(CaptureSettings.CameraMode);
            }

            if (_captureSession.PhotoCaptureSession != null)
            {
                //update live photos
                cell.UpdateLivePhotoStatus(_captureSession.PhotoCaptureSession.InProgressLivePhotoCapturesCount > 0,
                                           false);
            }

            //update video recording status
            var isRecordingVideo = _captureSession.VideoCaptureSession?.IsRecordingVideo ?? false;

            cell.UpdateRecordingVideoStatus(isRecordingVideo, false);

            //update authorization status if it's changed
            var status = AVCaptureDevice.GetAuthorizationStatus(AVAuthorizationMediaType.Video);

            if (cell.AuthorizationStatus != status)
            {
                cell.AuthorizationStatus = status;
            }

            //resume session only if not recording video
            if (!isRecordingVideo)
            {
                _captureSession.Resume();
            }
        }