public void Work <TState>(CameraCaptureSession session, CaptureRequest request, CaptureResult result, ref TState captureState) where TState : class { Integer afState = (Integer)result.Get(CaptureResult.ControlAfState); if (afState == null) { _captureStillPhoto(); } else if (afState.IntValue() == (int)ControlAFState.FocusedLocked || afState.IntValue() == (int)ControlAFState.NotFocusedLocked) { // Auto exposure can be null on some devices Integer aeState = (Integer)result.Get(CaptureResult.ControlAeState); if (aeState == null || aeState.IntValue() == (int)ControlAEState.Converged) { captureState = (TState)CaptureStateFactory.GetCaptureState(CaptureStates.PictureTaken); _captureStillPhoto(); } else { _runPrecaptureSequence(); } } }
public void Work <TState>(CameraCaptureSession session, CaptureRequest request, CaptureResult result, ref TState captureState) where TState : class { Integer aeState = (Integer)result.Get(CaptureResult.ControlAeState); if (aeState == null || aeState.IntValue() == (int)ControlAEState.Precapture || aeState.IntValue() == (int)ControlAEState.FlashRequired) { captureState = (TState)CaptureStateFactory.GetCaptureState(CaptureStates.WaitingNonPrecapture); } }
public void Work <TState>(CameraCaptureSession session, CaptureRequest request, CaptureResult result, ref TState captureState) where TState : class { Integer aeState = (Integer)result.Get(CaptureResult.ControlAeState); if (aeState == null || aeState.IntValue() != (int)ControlAEState.Precapture) { captureState = (TState)CaptureStateFactory.GetCaptureState(CaptureStates.PictureTaken); _captureStillPhoto(); } }
protected void UnlockFocus() { try { CaptureRequestBuilder.Set(CaptureRequest.ControlAfTrigger, (int)ControlAFTrigger.Cancel); SetAutoFlash(CaptureRequestBuilder); CameraCaptureSession.Capture(CaptureRequestBuilder.Build(), CameraCaptureSessionCaptureHandler, CameraBackgroundHandler); // Accepts current CaptureState & sets it to WaitingLock //-- Similar to: //-- ref ICaptureState captureState = ref CameraCaptureSessionCaptureHandler.Accept(this); //-- captureState = CaptureStateFactory.GetCaptureState(CaptureStates.WaitingLock); CameraCaptureSessionCaptureHandler.Accept(this) = CaptureStateFactory.GetCaptureState(CaptureStates.WaitingLock); } catch (CameraAccessException e) { e.PrintStackTrace(); } }