如何设置快门时间,但在 android 上将 ISO(感光度)保持为自动

问题描述 投票:0回答:1

我正在使用 Camera2 API 构建一个 Android 应用程序,该应用程序使用较短的快门时间,1/1000 和 1/2000。 我可以毫无问题地设置 SENSOR_EXPOSURE_TIME。但我想将 ISO(SENSOR_SENSITIVITY)保持在自动模式。

要设置快门速度,我使用以下代码:

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF); mPreviewRequestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, EXPOSURE); mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, surfaceView.getmBackgroundHandler());

此代码工作正常,但由于 CONTROL_AE_MODE 设置为 CONTROL_AE_MODE_OFF ISO (SENSOR_SENSITIVITY) 也必须手动设置。这是我不想要的,我想将 ISO 保持在自动状态。

有什么办法可以做到这一点或有解决方法吗?

java android android-camera2 exposure-time
1个回答
0
投票

如果您想在使用 Camera2 API 手动设置快门速度的同时将 ISO 保持在自动模式,您可以将 CONTROL_AE_MODE 设置为 CONTROL_AE_MODE_ON 而不是 CONTROL_AE_MODE_OFF。

通过将 CONTROL_AE_MODE 设置为 CONTROL_AE_MODE_ON,相机设备将根据所选的快门速度自动调整 ISO 和其他曝光参数以实现所需的曝光。

这里有一个示例代码片段,它将快门速度设置为 1/1000 秒,同时将 ISO 保持在自动模式:

// Set the desired shutter speed
long exposureTime = 1000000 / 1000; // 1/1000th of a second
mPreviewRequestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, exposureTime);

// Set the AE mode to ON to enable auto-exposure
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);

// Build and set the capture request
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, null);

在此示例中,exposureTime 变量计算为以微秒为单位的 1/1000 秒(即 1000 微秒)。 CONTROL_AE_MODE 设置为 CONTROL_AE_MODE_ON,启用自动曝光并允许相机设备根据需要调整 ISO 和其他曝光参数以实现所需曝光。最后,在CaptureSession上构建并设置捕获请求。

请注意,相机设备使用的实际 ISO 值可能因光照条件和其他因素而异。

© www.soinside.com 2019 - 2024. All rights reserved.