我正在开发使用Surfaceview的应用程序。我可以拍照,一切都很好。

我的问题是:预览图像太暗。我尝试更改相机的SceneMode,但没有任何效果(我尝试了AUTO,NIGHT和NIGHT_PORTRAIT)。

这是使用我的应用拍摄的照片之间的区别:

和Android Camera App(本机):

这是我的代码(在cam上使用的参数):

        c = Camera.open(0);
        Camera.Parameters params =  c.getParameters();
        params.setSceneMode(Camera.Parameters.SCENE_MODE_NIGHT);
        params.setAutoExposureLock(true);
        params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
        if (params.getMaxNumMeteringAreas() > 0){ // check that metering areas are supported
            List<Camera.Area> meteringAreas = new ArrayList<>();
            Rect areaRect1 = new Rect(-100, -100, 100, 100);    // specify an area in center of image
            meteringAreas.add(new Camera.Area(areaRect1, 600)); // set weight to 60%
            Rect areaRect2 = new Rect(800, -1000, 1000, -800);  // specify an area in upper right of image
            meteringAreas.add(new Camera.Area(areaRect2, 400)); // set weight to 40%
            params.setMeteringAreas(meteringAreas);
        }
        c.setParameters(params);


有人可以帮助我吗?

谢谢!

最佳答案

不要锁定自动曝光;如果这样做,则相机会锁定锁定时进行的任何设置,这可能太暗了
确保预览FPS范围允许相机减慢帧频以增加曝光。最好选择10-30 fps之类的范围;查看支持的fps范围。
在完成其余工作之前,请避免设置测光区域。
Android相机应用程序绝对不使用NIGHT场景模式,因此除非您知道它在使用该应用程序的设备上做过有用的事情,否则我会避免使用它。它没有跨设备标准化。

10-05 21:18