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

android.hardware.camera预览:如何手动设置曝光时间、快门速度、光圈和iso,android,android-camera,shutter,Android,Android Camera,Shutter,我正在开发一个应用程序,其中我有一个相机预览,我在黑暗环境中拍照。因此,我需要一种方法来手动控制相机的曝光时间以及快门速度、光圈和iso的设置 我知道这一定是可能的,因为应用程序长曝光照相机2(由AAASDream提供)有一种手动改变曝光时间的方法,并且它工作得非常完美。我指的不是我已经试过但还不够的曝光补偿 基于,我试着设置 Camera.Parameters params = camera1.getParameters(); params.set("mode", "m"); params.s

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

我知道这一定是可能的,因为应用程序长曝光照相机2(由AAASDream提供)有一种手动改变曝光时间的方法,并且它工作得非常完美。我指的不是我已经试过但还不够的曝光补偿

基于,我试着设置

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似乎支持这些功能

是的,无法通过Camera 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");
此外,特定设备必须支持这种设置,这种设置因设备而异。在某些设备上可以设置某些值,而在其他设备上,您不能也只能使用“自动”模式


出于这个原因,他们开发了Camera 2 API,该API更加标准化并支持此类功能。

我也遇到了同样的问题。当您使用takePicture()拍摄照片时,这些参数似乎生效,但如果您希望获得连续的预览帧,则在预览模式(onPreviewFrame())下,这些参数不起作用。我想知道这些参数在录制视频时是否生效。这对Camera 2 API非常有帮助: