1

私は現在Androids Camera 2 APIに取り組んでいますが、私は "CONTROL_AE_EXPOSURE_COMPENSATION"を設定できないという問題があります。AndroidのCamera2 APIで '' CONTROL_AE_EXPOSURE_COMPENSATION ''を設定するにはどうすればよいですか?

マイコード:

-1.0 < exposureAdjustment < 1.0

public void setExposure(double exposureAdjustment) { 
    Range<Integer> range1 = mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE); 
    int minExposure = range1.getLower(); 
    int maxExposure = range1.getUpper(); 

    float newCalculatedValue = 0; 
    if (exposureAdjustment >= 0) { 
     newCalculatedValue = (float) (minExposure * exposureAdjustment); 
    } else { 
     newCalculatedValue = (float) (maxExposure * -1 * exposureAdjustment); 
    } 

    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, (int) newCalculatedValue); 
} 

残念ながら、これは動作しません。

答えて

1

私は私のために働く、解決策を見つけた:

public void setExposure(double exposureAdjustment) { 
    Range<Integer> range1 = mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE); 
    int minExposure = range1.getLower(); 
    int maxExposure = range1.getUpper(); 

    float newCalculatedValue = 0; 
    if (exposureAdjustment >= 0) { 
     newCalculatedValue = (float) (minExposure * exposureAdjustment); 
    } else { 
     newCalculatedValue = (float) (maxExposure * -1 * exposureAdjustment); 
    } 

    try { 
     SCaptureRequest captureRequest = mSPreviewRequestBuilder.build(); 
     mSCaptureSession.setRepeatingRequest(captureRequest, camera2FocusMeteringManager.mSCaptureCallbackListener, mBackgroundHandler); 
     mSPreviewRequestBuilder.set(SCaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, (int) newCalculatedValue); 
     mSCaptureSession.capture(captureRequest, camera2FocusMeteringManager.mSCaptureCallbackListener, mBackgroundHandler); 
    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    } 
} 
関連する問題