android.hardware.camera preview : 如何手动设置曝光时间、快门速度、光圈和iso

android.hardware.camera preview : How to manually set exposure time, shutter speed, aperture, and iso

我正在开发一个应用程序,我可以在其中进行相机预览并在黑暗环境中拍照。因此,我需要一种方法来手动控制相机的曝光时间以及快门速度、光圈和 iso 的设置。

我知道这一定是可能的,因为应用程序 Long Exposure Camera 2(由 AAASDream 开发)有一种手动更改曝光时间的方法,而且效果很好。我指的不是我已经尝试过但还不够的曝光补偿。

基于 this post,我尝试设置

Camera.Parameters params = camera1.getParameters();
params.set("mode", "m");
params.set("aperture", 80);
params.set("shutter-speed", 9);
params.set("iso", 1600);

但这根本不起作用。

是否有任何隐藏的 API 或我可以使用的设置或我可以用来完成此操作的任何第三方库。

感谢所有帮助,谢谢。

我认为无法在 android.hardware.camera 中手动设置上述值。但看起来新版本 android.hardware.camera2 支持这些功能。

是的,无法直接通过相机 1 API 手动设置上述两个参数之一。这两个特征都无法通过标准化方法查询,因为它不受支持。

当然有办法绕过,通过特殊方法查询或设置这些属性,如relime9目前提到的:

// query all the settings you camera support (API 1)
mCamera.getParameters().flatten();
// set parameters - e.g. aperture
mCamera.getParameters().set("aperture", "80");

此外,特定设备必须支持此类设置,具体情况因设备而异。在某些设备上可以设置某些值,而在其他设备上则不能并且只能使用“'auto'”模式。

为此他们开发了 Camera 2 API,它更加标准化并支持此类功能。