1

Ich arbeite derzeit an Android API 2 und ich habe das Problem, dass ich die "CONTROL_AE_EXPOSURE_COMPENSATION" nicht einstellen kann.Wie setzt man die '' CONTROL_AE_EXPOSURE_COMPENSATION '' in der Camera2 API auf Android?

Mein Code:

-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); 
} 

Leider funktioniert das nicht.

Antwort

1

Ich habe eine Lösung gefunden, die für mich funktioniert:

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(); 
    } 
} 
Verwandte Themen