private void _updateTorch(CameraFlashMode flashMode) { if (captureSession != null) { captureSession.BeginConfiguration(); var devices = AVCaptureDevice.DevicesWithMediaType(AVMediaType.Video); foreach (var captureDevice in devices) { if (captureDevice.Position == AVCaptureDevicePosition.Back) { var avTorchMode = (AVCaptureTorchMode)Enum.ToObject(typeof(AVCaptureTorchMode), flashMode); if (captureDevice.IsTorchModeSupported(avTorchMode)) { try { NSError err; captureDevice.LockForConfiguration(out err); } catch { return; } captureDevice.TorchMode = avTorchMode; captureDevice.UnlockForConfiguration(); } } } captureSession.CommitConfiguration(); } }
public FormsCameraView() { flashMode = CameraFlashMode.Off; mainView = new UIView { TranslatesAutoresizingMaskIntoConstraints = false }; AutoresizingMask = UIViewAutoresizing.FlexibleMargins; captureSession = new AVCaptureSession { SessionPreset = AVCaptureSession.PresetHigh }; previewLayer = new AVCaptureVideoPreviewLayer(captureSession) { VideoGravity = AVLayerVideoGravity.ResizeAspectFill }; mainView.Layer.AddSublayer(previewLayer); Add(mainView); AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|[mainView]|", NSLayoutFormatOptions.DirectionLeftToRight, null, new NSDictionary("mainView", mainView))); AddConstraints(NSLayoutConstraint.FromVisualFormat("H:|[mainView]|", NSLayoutFormatOptions.AlignAllTop, null, new NSDictionary("mainView", mainView))); }
public static void PickImageFromCamera(Action <Texture2D> callback, Action onCancel, float compressionQuality = 1f, bool allowEditing = true, CameraType cameraType = CameraType.Front, CameraFlashMode flashMode = CameraFlashMode.Auto) { if (IGUtils.IsIosCheck()) { return; } Check.Argument.IsNotNull(callback, "callback"); compressionQuality = Mathf.Clamp01(compressionQuality); _pickImageFromCamera( ImageResultCallback, callback.GetPointer(), IGUtils.ActionVoidCallback, onCancel.GetPointer(), compressionQuality, allowEditing, cameraType == CameraType.Rear, (int)flashMode); }
/// <summary> /// Sets the camera's flash mode. /// </summary> /// <param name="flashMode">The mode to set.</param> public void SetFlashMode(CameraFlashMode flashMode) { if (!this.IsFlashAvailable()) { throw new InvalidOperationException("The camera's flash is not available."); } NSError error; if (!this.device.LockForConfiguration(out error)) { throw new NSErrorException(error); } try { if (flashMode == CameraFlashMode.On) { this.device.FlashMode = AVCaptureFlashMode.On; } else if (flashMode == CameraFlashMode.Auto) { this.device.FlashMode = AVCaptureFlashMode.Auto; } else if (flashMode == CameraFlashMode.Off) { this.device.FlashMode = AVCaptureFlashMode.Off; } else { throw new ArgumentException("Invalid CameraFlashMode (" + flashMode + ")."); } } finally { this.device.UnlockForConfiguration(); } }
internal static extern CameraError GetFlashMode(IntPtr handle, out CameraFlashMode mode);