/// <summary> /// Stops face detection. /// </summary> /// <since_tizen> 3 </since_tizen> /// <privilege> http://tizen.org/privilege/camera </privilege> /// <feature> http://tizen.org/feature/camera </feature> /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception> /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception> /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception> /// <exception cref="UnauthorizedAccessException">In case of access to the resources cannot be granted.</exception> public void StopFaceDetection() { if (_faceDetectedCallback == null) { throw new InvalidOperationException("The face detection is not started."); } Native.StopFaceDetection(_handle).ThrowIfFailed("Failed to stop the face detection."); _faceDetectedCallback = null; }
/// <summary> /// Starts face detection. /// The camera must be in the <see cref="CameraState.Preview"/> state. /// </summary> /// <since_tizen> 3 </since_tizen> /// <privilege> /// http://tizen.org/privilege/camera /// </privilege> /// <remarks> /// This should be called after <see cref="StartPreview"/> is started. /// The Eventhandler set using <see cref="FaceDetected"/> is invoked when the face is detected in the preview frame. /// Internally, it starts continuously focus and focusing on the detected face. /// </remarks> /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception> /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception> /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception> /// <exception cref="UnauthorizedAccessException">In case of access to the resources cannot be granted.</exception> public void StartFaceDetection() { ValidateState(CameraState.Preview); _faceDetectedCallback = (IntPtr faces, int count, IntPtr userData) => { var result = new List <FaceDetectionData>(); IntPtr current = faces; for (int i = 0; i < count; i++) { result.Add(new FaceDetectionData(current)); current = IntPtr.Add(current, Marshal.SizeOf <Native.DetectedFaceStruct>()); } FaceDetected?.Invoke(this, new FaceDetectedEventArgs(result)); }; CameraErrorFactory.ThrowIfError(Native.StartFaceDetection(_handle, _faceDetectedCallback, IntPtr.Zero), "Failed to start face detection"); }