Camera 2 手动检查是否支持 ISO 和 SHUTTER_SPEED

Camera 2 manually checking if ISO and SHUTTER_SPEED are supported

我试图检查是否支持不同镜头的 shutter_speed 和 iso,但我不知道如何,一开始我以为我是这样正确检查的:

val capabilities = characteristics.get(REQUEST_AVAILABLE_CAPABILITIES)!!
val canReadSensorSettings = capabilities.contains(
            REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS)
val hasManualSensor = capabilities.contains(
            REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)

然后正在检查 if(canReadSensorSettings && hasManualSensor) //然后可以为此镜头启用手动曝光。

我认为它在工作然后发现在某些前镜头上这两个值都是错误的但我仍然可以更改 ISO 和 Shutter_Speed

我的问题又来了,检查 ISO 和 SHTTER_SPEED 支持相机设备的正确方法是什么。

顺便说一句,我看到了这个但无法从中得到它,可能解决方案就在这个 link 但我无法得到它:https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES

有些设备可能允许更改 exposure/ISO 值,即使它们没有列出 MANUAL_SENSOR 功能(请注意,列出 MANUAL_SENSOR 意味着 READ_SENSOR_SETTINGS 将始终也在那里,所以你可以检查 MANUAL_SENSOR).

这意味着它们在某种程度上不满足 MANUAL_SENSOR 的所有要求,因此可能有些控件不起作用,或者与 API 要求的操作方式不同.

因此,为了可靠性,如果未列出 MANUAL_SENSOR 功能,我不会尝试使用手动设置,除非您要自己测试每个设备以确保一切正常。坚持使用列出 MANUAL_SENSOR 的设备意味着它们已经过合规性测试,可以在手动控制下按预期工作。