CameraX - 设置 LENS_FOCUS_DISTANCE 在 Samsung S22 Ultra 上不起作用

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

在使用 CameraX 的应用程序中将 LENS_FOCUS_DISTANCE 设置为 Camera2CameraControl 时,它在大多数情况下都有效,但在特定情况下在 Samsung S22 Ultra 设备上不起作用。

设置 LENS_FOCUS_DISTANCE 的代码:

Camera2CameraControl.from(camera.cameraControl).captureRequestOptions = CaptureRequestOptions.Builder()
                    .apply {
                        setCaptureRequestOption(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_OFF)
                        setCaptureRequestOption(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON)

                        // Fix focus lens distance to infinity to get focus far away (avoid to get a close focus)
                        setCaptureRequestOption(CaptureRequest.LENS_FOCUS_DISTANCE, 0.0f)
                    }
                    .build()

测试用例:

  • 打开相机应用程序,将模式设置为“Pro”并自行定义焦距
  • 使用 CameraX 打开自定义应用程序,转到相机屏幕。检查焦距是否为 0 > 错误:焦距设置与相机应用程序中相同

也许 One UI 的三星覆盖层可能会干扰?

android android-camerax samsung
1个回答
0
投票

我在三星 S22+ 和 S23FE 上遇到了类似的问题(如果不是相同的问题)。在这些设备上将焦距设置为零以实现无限远对焦不会移动镜头,并且会保留相机上次使用的任何对焦级别(例如,如果您使用了三星相机应用程序并聚焦于近距离物体,然后打开您的应用程序要聚焦在无限远,焦点将保持在近处设置)。使用较小的非零焦点值似乎对于天文照片来说效果很好。我使用 1.0e-5 作为折衷方案,但 IIRC 小于 1e-8 左右会表现出与 0.0 相同的行为。

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