Я пытаюсь сделать снимок с помощью 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);