繁体   English   中英

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编程地设置ISO? 我想念什么吗?

相同的参数适用于曝光时间,因为我可以使用应用程序很好地更改它,但是该键不可用。 该应用程序是否仅给人以更改这些设置的印象,而实际上却通过其他方式达到了预期的效果?

经过一些研究,我得出的结论是库存相机应用程序正在使用旧的相机API。 确实,如果使用Camera.Parameters parameters = camera.getParameters(); 然后我打印使用parameters.flatten()获得的字符串,iso控件是我可以更改的参数之一。 因此,对于那些使用camera2方法cameraCharact.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)报告为LEGACY终端,我决定恢复为旧的相机api,并使用此页面中提供的解决方案手动设置iso。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM