2014-01-21 39 views
12

會發生什麼指定相機初始化時的值?我應該如何設置自定義的相機,曝光和白平衡值,如果在Android定製camera.Does初始化相機參數時,相機自動處理這些我不設置曝光和白平衡或者我需要

我在過去遇到過閃光燈的問題,將曝光和白平衡設置爲特定值有助於我克服這些問題。我沒有任何計劃讓用戶手動修補曝光和/或白平衡設置。

我有以下代碼設置:

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是applied.Why,我應該如何使用這些鎖在我的相機代碼?

回答

5

根據我自身的發展,曝光和白平衡默認設置爲「Auto」:自動曝光」和‘自動白平衡’

您可以檢查與所支持的模式:

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); 
+3

千萬不要使用任何東西,但常量或方法: 'camera_parameters.getWhiteBalance()' –

+2

@JoelTeply好運設置ISO或其他幾個參數的方式。爲方便起見,在Camera.Parameters API中只有一部分可設置的攝像機參數具有getter/setter方法。這正是爲什麼提供通用的get()和set()方法的原因。只要你從支持值列表中選擇你的設置,上面的方法就沒問題。我不明白爲什麼傑克的回答是被低估的。 – chase

+0

你是對的。我們通過這種方式設置特定的製造商設置,但不是公開的,但我仍然傾向於儘可能使用常數,否則會出現typ –

相關問題