Šem*_*vić 3 java android autoexposurecompensation android-camerax
我在我的项目中使用 CameraX。我已经创建了预览用例并捕获用例。
final CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(lensFacing).build();
previewBuilder = new Preview.Builder()
.setTargetResolution(targetOutputSize)
.setTargetRotation(rotation);
preview = previewBuilder.build();
final ImageCapture.Builder imageCaptureBuilder = new ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
.setTargetResolution(targetOutputSize)
.setTargetRotation(rotation);
imageCapture = imageCaptureBuilder.build();
Run Code Online (Sandbox Code Playgroud)
一切正常。现在,我需要添加功能来手动更改曝光补偿,但我在官方文档或其他任何地方找不到如何执行此操作的任何参考。是否可以使用 CameraX,或者我需要切换到 Camera2 API?
请,欢迎任何帮助。
CameraX 库有新版本。
def camerax_version = '1.0.0-beta09'
Run Code Online (Sandbox Code Playgroud)
首先将这些依赖项添加到 gradle 文件中。
// CameraX core library
implementation "androidx.camera:camera-core:$camerax_version"
// CameraX Camera2 extensions
implementation "androidx.camera:camera-camera2:$camerax_version"
Run Code Online (Sandbox Code Playgroud)
该版本支持曝光补偿,可在运行时调整。首先创建preview和takePicture用例,然后将这些用例绑定到cameraProvider。
camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture);
Run Code Online (Sandbox Code Playgroud)
现在我们有了相机实例,它可以用来检索 CameraInfo,并从 CameraInfo 中检索 ExposureState。
ExposureState exposureState = camera.getCameraInfo().getExposureState();
Run Code Online (Sandbox Code Playgroud)
我们可以使用exposureState来检查设备是否支持曝光补偿
if (!exposureState.isExposureCompensationSupported()) return;
Run Code Online (Sandbox Code Playgroud)
接下来我们需要获取ExposureCompensation Range
Range<Integer> range = exposureState.getExposureCompensationRange();
Run Code Online (Sandbox Code Playgroud)
最后,我们可以通过以下方式设置ExposureCompensation指数
if (range.contains(index))
camera.getCameraControl().setExposureCompensationIndex(index);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2753 次 |
| 最近记录: |