使用 CameraX 或 Camera2 获取相机 ISO/快门速度

Get camera ISO / shutter speed using CameraX or Camera2

我正在尝试获取当前预览的快门速度和 ISO 设置。

我找不到使用 CameraX 或 Camera2 执行此操作的方法。这不是可用的东西吗?

否则,有没有办法获取用于拍照的设置?

对于 Camera2,此信息在 CaptureResult objects you get for every captured image, via onCaptureCompleted. However, not all devices support listing this information; only devices that list the READ_SENSOR_SETTINGS capability will do this. That includes all devices that list hardware level FULL 或更高版本中可用,并且可能包括一些 LIMITED 级别的设备。

具体来说,您想查看 SENSOR_SENSITIVITY for ISO and SENSOR_EXPOSURE_TIME 快门速度。

如果您想要用于 JPEG 捕获的值,请查看来自您用于请求 JPEG 的 CaptureRequest 的 CaptureResult。

我还能够通过 Camera2CameraInfo.from and then getCameraCharacteristic 使用 Jetpack/CameraX API 仅获取 ISO 设置。但似乎没有办法 设置 它们(使用 CameraX)。

在 Jetpack/CameraX 的最新版本中,也可以 设置 ISO/ShutterSpeed。 下面的例子设置预览的ISO(用C#语言写的,但它类似于Java):

var builder = new Preview.Builder();
var ext1 = new Camera2Interop.Extender(builder)
    .SetCaptureRequestOption(CaptureRequest.ControlAeMode, (int)ControlAEMode.Off)
    .SetCaptureRequestOption(CaptureRequest.SensorSensitivity, 3200);
            
var preview = builder.SetTargetName("PREVIEW").Build();
preview.SetSurfaceProvider(sfcPreview.SurfaceProvider);