Android camera2:捕获请求键不包括我可以从默认应用程序控制的设置
Android camera2: capture request keys don't include settings I can control from the default app
我正在使用 getAvailableCaptureRequestKeys()
来了解我可以修改哪些设置。
比如我要修改ISO。首先我得到所有可用的键:
captureRequestKeys = cameraCharact.getAvailableCaptureRequestKeys();
然后我继续将 ISO 设置为我想要的值,前提是相关密钥(在本例中为 CaptureRequest.SENSOR_SENSITIVITY
)包含在 captureRequestKeys
.
中
if (captureRequestKeys.contains(CaptureRequest.SENSOR_SENSITIVITY))
captReqBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, MAX_ISO);
captureRequestKeys
中是否包含密钥取决于终端;特别是 SENSOR_SENSITIVITY
保证只存在于报告为 HARDWARE_LEVEL_FULL
的终端,正如文档所指出的那样。由于我的测试终端是 LEGACY
终端,因此我无法设置 ISO 并不奇怪。
但令我困扰的是,每当我使用默认的相机应用程序拍照时,我都可以做到这一点。所以我的问题是:为什么我可以在使用默认相机应用程序拍照时设置 ISO,但我不能使用 camera2 API 以编程方式进行设置?我错过了什么吗?
相同的论点适用于曝光时间,因为我可以使用应用程序很好地更改它,但密钥不可用。该应用程序是否仅给人以更改这些设置的印象,而实际上它是通过其他方式达到预期效果的?
经过一些研究,我得出结论,库存相机应用程序使用的是旧相机 api。事实上,如果使用 Camera.Parameters parameters = camera.getParameters();
然后我打印使用 [=11=] 获得的字符串,iso 控制是我可以更改的参数之一。因此,对于那些报告 LEGACY
使用 camera2 方法 cameraCharact.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)
的终端,我决定恢复到旧相机 api 并使用 this page 中提供的解决方案手动设置 iso。
我正在使用 getAvailableCaptureRequestKeys()
来了解我可以修改哪些设置。
比如我要修改ISO。首先我得到所有可用的键:
captureRequestKeys = cameraCharact.getAvailableCaptureRequestKeys();
然后我继续将 ISO 设置为我想要的值,前提是相关密钥(在本例中为 CaptureRequest.SENSOR_SENSITIVITY
)包含在 captureRequestKeys
.
if (captureRequestKeys.contains(CaptureRequest.SENSOR_SENSITIVITY))
captReqBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, MAX_ISO);
captureRequestKeys
中是否包含密钥取决于终端;特别是 SENSOR_SENSITIVITY
保证只存在于报告为 HARDWARE_LEVEL_FULL
的终端,正如文档所指出的那样。由于我的测试终端是 LEGACY
终端,因此我无法设置 ISO 并不奇怪。
但令我困扰的是,每当我使用默认的相机应用程序拍照时,我都可以做到这一点。所以我的问题是:为什么我可以在使用默认相机应用程序拍照时设置 ISO,但我不能使用 camera2 API 以编程方式进行设置?我错过了什么吗?
相同的论点适用于曝光时间,因为我可以使用应用程序很好地更改它,但密钥不可用。该应用程序是否仅给人以更改这些设置的印象,而实际上它是通过其他方式达到预期效果的?
经过一些研究,我得出结论,库存相机应用程序使用的是旧相机 api。事实上,如果使用 Camera.Parameters parameters = camera.getParameters();
然后我打印使用 [=11=] 获得的字符串,iso 控制是我可以更改的参数之一。因此,对于那些报告 LEGACY
使用 camera2 方法 cameraCharact.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)
的终端,我决定恢复到旧相机 api 并使用 this page 中提供的解决方案手动设置 iso。