public CameraState addPreviewLayerToView(UIView view, CameraOutputMode newCameraOutputMode, Action completion) { if (_canLoadCamera()) { if (embeddingView != null) { if (previewLayer != null) { previewLayer.RemoveFromSuperLayer(); } } if (cameraIsSetup) { _addPreviewLayerToView(view); OutputMode = newCameraOutputMode; if (completion != null) { completion(); } } else { _setupCamera( () => { this._addPreviewLayerToView(view); this.OutputMode = newCameraOutputMode; if (completion != null) { completion(); } } ); } } return(_checkIfCameraIsAvailable()); }
private void _setupOutputMode(CameraOutputMode newCameraOutputMode, CameraOutputMode?oldCameraOutputMode) { captureSession.BeginConfiguration(); if (oldCameraOutputMode != null) { // remove current setting switch (oldCameraOutputMode) { case CameraOutputMode.StillImage: if (stillImageOutput != null) { captureSession.RemoveOutput(stillImageOutput); } break; case CameraOutputMode.VideoOnly: case CameraOutputMode.VideoWithMic: if (movieOutput != null) { captureSession.RemoveOutput(movieOutput); } if (oldCameraOutputMode == CameraOutputMode.VideoWithMic) { _removeMicInput(); } break; default: break; } } // configure new devices switch (newCameraOutputMode) { case CameraOutputMode.StillImage: if (stillImageOutput == null) { _setupOutputs(); } if (stillImageOutput != null) { captureSession.AddOutput(stillImageOutput); } break; case CameraOutputMode.VideoOnly: case CameraOutputMode.VideoWithMic: captureSession.AddOutput(_getMovieOutput()); if (newCameraOutputMode == CameraOutputMode.VideoWithMic) { var validMic = _deviceInputFromDevice(mic); if (validMic != null) { captureSession.AddInput(validMic); } } break; default: break; } captureSession.CommitConfiguration(); _updateCameraQualityMode(CameraOutputQuality); _orientationChanged(); }
public CameraState addPreviewLayerToView(UIView view, CameraOutputMode newCameraOutputMode) { return(addPreviewLayerToView(view, newCameraOutputMode, null)); }