コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
ファイル: Camera.cs プロジェクト: ProactiveSoft/Camera
        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();
            }
        }