2013-11-28 87 views

回答

1

如果您的目標是API等級8以上,則可以查看相機parameters,特別是white balanceexposure。您應該與他們玩一點,以找到適合您需求的正確設置。

+0

@fastque,我使用了parameters.setExposureCompensation(int value)方法,但是請告訴我要設置什麼值作爲參數。我用values作爲參數.getMaxExposureCompensation()是否正確..? –

+0

你應該根據你的需要測試數值,我不能告訴你,因爲你沒有提到你想改變亮度的方式。應用程序應該調用getMinExposureCompensation和getMaxExposureCompensation來知道是否支持曝光補償,然後設置一個值。你得到什麼樣的結果?你有沒有嘗試改變白平衡? – fasteque

+0

感謝您的善意響應緊固件 –

0

所有設備都不支持白平衡。這意味着白平衡值是auto.so,我們不能增加或減少該值。

支持曝光的所有設備。曝光的默認值是0

,我們能夠得到從照相機API的最大值和最小值這樣

public void setExposureCompensation(int value){ 

    Camera.Parameters camParams = mCamera.getParameters(); 

    int minExpCom=camParams.getMinExposureCompensation(); 
    int maxExpCom=camParams.getMaxExposureCompensation(); 

    //Log.i(TAG,"minExpCom : "+minExpCom); 
    //Log.i(TAG,"maxExpCom : "+maxExpCom); 
    if(maxExpCom>0 && value<=maxExpCom && value>=minExpCom){ 
     camParams.setExposureCompensation(value); 
     mCamera.setParameters(camParams); 

    } 

} 

我們操縱的最小值和最大值的之間的曝光值曝光。

這是支持所有設備的唯一選項用於控制相機的亮度。

0

你可以看到我的代碼來改變相機的曝光值:

// set Camera Exposure value from input progress (0.0f - 1.0f) 
void setEV(float progress) { 
    if (progress < 0.0f && progress > 1.0f) return; 
    params = mCamera.getParameters(); 
    int min = params.getMinExposureCompensation(); // -3 on my phone 
    int max = params.getMaxExposureCompensation(); // 3 on my phone 
    float realProgress = progress - 0.5f; 
    int value; 
    if (realProgress < 0) { 
     value = -(int) (realProgress * 2 * min); 
    } else { 
     value = (int) (realProgress * 2 * max); 
    } 
    // if changed 
    if (value != params.getExposureCompensation()) { 
     params.setExposureCompensation(value); 
     mCamera.setParameters(params); 
    } 
} 
相關問題