我想创建一个自定义相机应用程序。我从这里跟着Android Developer的例子进行了小小的调整。不过,我的相机预览变得相当黑暗。另一方面,股票相机提供了更加明亮的预览。Android相机预览很暗
我尝试了几个设置,使其工作得更好,但似乎没有任何影响。相关代码张贴在这里。
CameraActivity(主)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
if(CameraHelper.checkCameraHardware(this)) {
mHelper = new CameraHelper(this, getWindowManager().getDefaultDisplay());
}
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
mPreview = new CameraPreview(this, CameraHelper.camera);
mPreview.setLayoutParams(new LayoutParams(CameraHelper.mSize.width, CameraHelper.mSize.height, Gravity.CENTER));
preview.addView(mPreview);
}
CameraHelper类(初始化相机并设置默认参数)
public CameraHelper(CameraListener listener, Display display){
mListener = listener;
camera = getCameraInstance();
mParameters = camera.getParameters();
initCameraParameters();
mSize = getPreviewSize(display);
mParameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
mParameters.setPictureSize(2560, 1920);
mParameters.setAutoExposureLock(false);
mParameters.setAutoWhiteBalanceLock(false);
mParameters.set("iso", "ISO800"); //Tried with 400, 800, 600 (values obtained from flatten())
mParameters.setColorEffect("none");
mParameters.setPictureSize(2560, 1920);
mParameters.setPreviewFrameRate(20);
mParameters.set("scene-mode", "auto");
mParameters.setFocusMode("auto");
mParameters.setExposureCompensation(4);
camera.setParameters(mParameters);
}
将摄像机从例如发送帧SurfaceHolder.Surface从上面的开发者页面链接。
看到这里的区别: 股票相机应用 我的相机应用
尝试设置ISO等基于从这里张贴的相机upack参数。它仍然没有工作。
参数(16369): 效应值=无,单,消极,棕褐色,水色,锐化,紫色,绿色,色调,蓝色色调,粉色,黄色,红色色调,单,古董;曝光补偿步= 0.5;焦距= 3.43;对焦区=(0,0,0,0,0);对焦距离= 0.10,1.20,无穷远;将对焦模式值=汽车,宏, facedetect; GPS海拔= 0; GPS纬度= 0; GPS的经度= 0; GPS处理法=全球定位系统; GPS时间戳= 0;水平视角= 51.2; ISO =汽车;异值=汽车,ISO50,ISO100,ISO200,ISO400,ISO800,ISO1600; JPEG-质量= 1; JPEG缩略图高度= 480; JPEG缩略图大小的值= 640x480,0x0; JPEG缩略图宽度= 640; MAX-曝光补偿= 4; MAX-NUM-聚焦区域= 1;最大变焦= 12;最小曝光补偿= -4;画面格式= JPEG;画面格式值= JPEG;图像尺寸值= 2560x1920,2560x1536,2048x1536,2048x1232,1600x1200,1600x960,800x 480,640x480;预览格式= yuv420sp;预览格式值= yuv420sp;预览FPS-范围= 15000,30000;预览FPS-范围值=(15000,30000);预览帧率= 30;预览-frame-率值= 30;预览大小640×480 =;预览大小值= 1280x720,800x480,720x480,640x480,352x288;旋转= 0;场景模式=自动;场景模式值=汽车,肖像,风景,夜间,海滩,雪,日落,焰火,运动,聚会,烛光,ASD,背光源,黄昏黎明,文本,水落颜色;垂直视角= 39.4;视频帧格式= yuv422i-YUYV ;最大光圈值=汽车,白炽灯,荧光灯,日光,阴天,日光;变焦= 0;缩小比率= 100,125,150,175,200,225,250,275,300,325,350,375,400;放大支持= TRUE;将对焦模式=汽车;画面尺寸= 2560x1920;曝光补偿= 4 ;
编辑:根据下面的评论进一步测试,它看起来只是它的预览比它应该是黑暗的。实际拍摄的图像光线充足,曝光补偿似乎工作正常。它只是让我头痛的预览。测试i9003运行CM11和Nexus 10运行股票机器人。
您可能想尝试在您的设置中“玩耍”/增加曝光补偿。它会改变什么吗? –
我使用最大支持的曝光补偿,即4(mParameters.setExposureCompensation(4))。该照片是以最大曝光补偿拍摄的。 – Puneet
您是否从“params.getMinExposureCompensation()”和“params.getMaxExposureCompensation()”获得了expo-compensation的最大/最小值? –