ProCamera icon indicating copy to clipboard operation
ProCamera copied to clipboard

第二次拍照没有反应我打LOG了您

Open 845479430 opened this issue 6 years ago • 13 comments

image

845479430 avatar Mar 26 '19 02:03 845479430

这是第一次拍照成功的时候

845479430 avatar Mar 26 '19 02:03 845479430

image

845479430 avatar Mar 26 '19 02:03 845479430

这是第二次拍照失败的时候的时候 doStillCapture函数都没走到

845479430 avatar Mar 26 '19 02:03 845479430

image

845479430 avatar Mar 26 '19 02:03 845479430

@18Gray

845479430 avatar Mar 26 '19 02:03 845479430

image

845479430 avatar Mar 26 '19 03:03 845479430

问题在这段代码中但是我不知道该怎么改

845479430 avatar Mar 26 '19 03:03 845479430

Integer afState = result.get(CaptureResult.CONTROL_AF_STATE); ==0造成的但是不知道具体原因

845479430 avatar Mar 26 '19 03:03 845479430

我找了一个魅族note3,5.1系统,没有啥问题,你先把这句代码去掉试一下

18Gray avatar Mar 26 '19 04:03 18Gray

我找了一个魅族note3,5.1系统,没有啥问题,你先把这句代码去掉试一下

我用的是两个7.0系统的手机,我不知道是不是手机的问题

845479430 avatar Mar 26 '19 04:03 845479430

找到问题所在了afState这个值在第二次的时候等于0造成的,代码被我改造了您可以看一下,直接复制粘贴就行

845479430 avatar Mar 26 '19 08:03 845479430

private void checkState(CaptureRequest request, CaptureResult result) { Integer afState = result.get(CaptureResult.CONTROL_AF_STATE); Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE); switch (mState) {

            case STATE_PREVIEW:  //对预览数据处理,根据afState即聚焦状态,如果为空、跟上次一样不做处理
                if (afState == null)
                {
                    Log.d("Camera2TextureView", "null");
                    return;
                }else if (afState != null && afState.intValue() == mAfState)//这次的值与之前的一样,忽略掉
                {
                    Log.d("Camera2TextureView", "same");
                    return;
                }else {
                    mAfState = afState.intValue();
                    judgeFocus();  //聚焦视图
                }
                break;

            case STATE_WAITING_LOCK:

// if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState || CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState // || CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED == afState || CaptureResult.CONTROL_AF_STATE_PASSIVE_UNFOCUSED == afState) // { // if (afState == null) // { // Log.i("qwe","1"); // doStillCapture(); // } // else if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState // || CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) // { // aeState = result.get(CaptureResult.CONTROL_AE_STATE); // // if (aeState == null || aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) // { // Log.i("qwe","2"); // mState = STATE_PICTURE_TAKEN; // doStillCapture(); // } else // { // Log.i("qwe","3"); // tryCaptureAgain(); // } // } // } // 等待锁定的状态, 某些设备完成锁定后CONTROL_AF_STATE可能为null if (afState == null || afState==0) { doStillCapture(); } else if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState || CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState || CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED == afState || CaptureResult.CONTROL_AF_STATE_PASSIVE_UNFOCUSED == afState) { // 如果焦点已经锁定(不管自动对焦是否成功), 检查AE的返回, 注意某些设备CONTROL_AE_STATE可 // 能为空 // Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE); if (aeState == null || aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) { // 如果自动曝光(AE)设定良好, 将状态置为已经拍照, 执行拍照 mState = STATE_PICTURE_TAKEN; doStillCapture(); } else { // 以上条件都不满足, 执行预拍照系列操作 tryCaptureAgain(); } } break;

            case STATE_WAITING_PRECAPTURE:
                // 等待预处理状态, 某些设备CONTROL_AE_STATE可能为null
                if (aeState == null ||
                        aeState == CaptureResult.CONTROL_AE_STATE_PRECAPTURE ||
                        aeState == CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED) {
                    // 如果AE需要做于拍照或者需要闪光灯, 将状态置为"非等待预拍照"(翻译得有点勉强)
                    mState = STATE_WAITING_NON_PRECAPTURE;
                }
                break;

            case STATE_WAITING_NON_PRECAPTURE:
                // 某些设备CONTROL_AE_STATE可能为null
                if (aeState == null || aeState != CaptureResult.CONTROL_AE_STATE_PRECAPTURE) {
                    // 如果AE做完"非等待预拍照", 将状态置为已经拍照, 并执行拍照操作
                    mState = STATE_PICTURE_TAKEN;
                    doStillCapture();
                }

                break;
        }
    } @18Gray 

845479430 avatar Mar 26 '19 08:03 845479430

image

845479430 avatar Mar 26 '19 08:03 845479430