1

Je travaille actuellement sur Androids Camera 2 API et j'ai le problème, que je ne peux pas définir le "CONTROL_AE_EXPOSURE_COMPENSATION".Comment définir le paramètre "CONTROL_AE_EXPOSURE_COMPENSATION" dans l'API Camera2 sur Android?

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

Malheureusement, cela ne fonctionne pas.

Répondre

1

J'ai trouvé une solution qui fonctionne pour moi:

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