Как установить значения экспозиции и баланса белого для пользовательской камеры

Что произойдет, если я не установлю экспозицию и баланс белого при инициализации параметров камеры на пользовательской камере Android. Камеру обрабатывают сами по себе или мне нужно указать значения при инициализации камеры?

У меня были проблемы со вспышкой в ​​прошлом, установление экспозиции и баланса белого для определенных значений помогло бы мне преодолеть эти проблемы. У меня нет никаких планов позволить пользователю вручную манипулировать настройками экспозиции и/или баланса белого.

У меня установлен следующий код:

if(isSupported(Camera.Parameters.SCENE_MODE_AUTO, mParameters.getSupportedSceneModes()))
    {
        mSceneMode=Camera.Parameters.SCENE_MODE_AUTO;
        mParameters.setSceneMode(mSceneMode);
    }

    int min=mParameters.getMinExposureCompensation();
    int max=mParameters.getMaxExposureCompensation();
    float step=mParameters.getExposureCompensationStep();
    //do i need to setExposureCompensation here??
    if(mSceneMode==Camera.Parameters.SCENE_MODE_AUTO && isSupported(Camera.Parameters.FLASH_MODE_AUTO,mParameters.getSupportedFlashModes()))
    {
            //ususally when I let the flash fire,the image is filled with light
            //all that does is make everything else undecipherable...  
        mFlashMode=Camera.Parameters.FLASH_MODE_AUTO;
        mParameters.setFlashMode(mFlashMode);
    }

        if(isSupported(Camera.Parameters.WHITE_BALANCE_AUTO,mParameters.getSupportedWhiteBalance()))
    {
        mWhiteBalanceMode=Camera.Parameters.WHITE_BALANCE_AUTO;
        mParameters.setWhiteBalance(mWhiteBalanceMode);
    }

Я читал, что циклы обновления автоматического экспонирования и автоматического баланса белого прекращаются, когда применяются autoExposureLock и autoWhiteBalanceLock. Почему и как использовать эти блокировки в коде камеры?

Ответ 1

Основываясь на моей собственной разработке, экспозиция и баланс белого по умолчанию установлены на "Авто": автоматическая экспозиция "и" автоматический баланс белого ".

Вы можете проверить поддерживаемые режимы с помощью:

mCameraParameters = mCamera.getParameters();
Log.i(TAG, "Supported Exposure Modes:" + mCameraParameters.get("exposure-mode-values"));    
Log.i(TAG, "Supported White Balance Modes:" + mCameraParameters.get("whitebalance-values"));

и проверьте текущие режимы с помощью:

Log.i(TAG, "Exposure setting = " + mCameraParameters.get("exposure")); 
Log.i(TAG, "White Balance setting = " + mCameraParameters.get("whitebalance")); 

если вы хотите использовать другой режим, вы можете установить его так:

mCameraParameters.set("exposure", "night");
mCamera.setParameters(mCameraParameters);