Android SurfaceView 预览太暗

Android SurfaceView Preview too dark

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

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

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

和 Android 相机应用程序(本机):

这是我的代码(在 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);

谁能帮帮我?

谢谢!

  1. 不锁定自动曝光;如果你这样做,相机会卡在你锁定它时的任何设置,这可能太暗了

  2. 确保预览 FPS 范围允许相机降低帧速率以增加曝光。最好以 select 10-30 fps 为范围;查看支持的 fps 范围是多少。

  3. 避免设置测光区域,直到完成剩下的工作。

  4. Android 相机应用绝对没有使用 NIGHT 场景模式,所以我会避免使用它,除非你知道它在你使用你的应用的设备上做了一些有用的事情;它没有跨设备标准化。