Функция Camera2 capture () игнорирует мой SENSOR_EXPOSURE_TIME - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь сделать снимок с помощью API Camera2 с определенным временем экспозиции.все выглядит хорошо, если для него установлены небольшие значения, такие как 1/8000 секунды или 1/10.Проблема возникает, когда я пытаюсь установить его в значения, такие как 5 секунд или 30, похоже, что камера ограничивает время экспозиции до 1 секунды ... даже если SENSOR_INFO_EXPOSURE_TIME_RANGE равно:

from 13181 to 48369980540(48 seconds).

Когда яполучая время экспозиции из CaptureResult, я получаю введенное мной значение, а не реальное время экспозиции.

Я знаю, что моя камера может делать снимки с более высокой экспозицией, поскольку предел стандартной камеры составляет 30 секунд.

Это код, который я пробовал:

final CaptureRequest.Builder captureBuilder =
                mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
        captureBuilder.addTarget(mImageReader.getSurface());

            captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
            captureBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, 100);
            captureBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, 10000000000L);//10 seconds




        // Orientation
        int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
        captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation(rotation));

        CameraCaptureSession.CaptureCallback CaptureCallback
                = new CameraCaptureSession.CaptureCallback() {

            @Override
            public void onCaptureCompleted(@NonNull CameraCaptureSession session,
                                           @NonNull CaptureRequest request,
                                           @NonNull TotalCaptureResult result) {
                showToast("Saved: " + mFile);
                Log.d(TAG, mFile.toString());
                Long expo = result.get(CaptureResult.SENSOR_EXPOSURE_TIME);
                unlockFocus();
            }
        };

        mCaptureSession.stopRepeating();
        mCaptureSession.abortCaptures();
        mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);
...