0

我有一个可以正常工作的自定义相机,除了我正在使用的闪光灯的实现。我尝试过使用FLASH_MODE_AUTOin surfaceChanged。我也尝试过使用以下代码Light Sensor

      SensorEventListener listener=new SensorEventListener(){

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        //Not touching this with a ten foot pole
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        float lux=event.values[0];
        Log.d(TAG, "The light sensor says: "+lux+" lux");
        Camera.Parameters params=mCamera.getParameters();   
        cancelAutoFocus();  
            if(lux<50)
            {
                if(params.getFlashMode()!=Parameters.FLASH_MODE_ON)
                    params.setFlashMode(Parameters.FLASH_MODE_ON);
                if(params.getExposureCompensation()!=params.getMinExposureCompensation())
                    params.setExposureCompensation(params.getMinExposureCompensation());
                Log.d(TAG, "Exposure has been set to "+params.getMinExposureCompensation());
                mCamera.setParameters(params);
            }
            else
            {
                params.setFlashMode(Parameters.FLASH_MODE_OFF);
                mCamera.setParameters(params);
            }
    }
};

无论我做什么,当我拍照并且闪光灯闪光时,我的照片最终看起来像这样:

在弱光条件下使用我的相机获得的图像

但是,当我使用默认的相机应用程序拍照时,它看起来很普通,甚至有点暗。

使用默认相机应用获取的图像

我想完全摆脱这种使用光传感器的解决方法并使用。我怎样才能FLASH_MODE_AUTO让我的相机在弱光条件下和/或打开闪光灯时表现良好?

或者我必须做任何后期处理以确保图像的亮度较低。

4

0 回答 0