[android] 안드로이드 카메라 노출 보정

카메라 앱을 개발하는 동안 카메라 노출을 조절해야 하는 경우가 생길 수 있습니다. 안드로이드에서는 카메라 API를 사용하여 노출 보정을 쉽게 할 수 있습니다.

카메라 노출 보정을 위한 안드로이드 API

안드로이드에서 Camera 클래스나 Camera2 API를 사용하여 카메라 노출을 조절할 수 있습니다. Camera 클래스는 오래된 API이며, Camera2 API는 안드로이드 5.0 (API 레벨 21)부터 제공됩니다.

Camera 클래스를 사용한 카메라 노출 보정

Camera.Parameters parameters = mCamera.getParameters();
parameters.setExposureCompensation(value); // value는 노출 보정 값
mCamera.setParameters(parameters);

Camera2 API를 사용한 카메라 노출 보정

CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String cameraId = manager.getCameraIdList()[0]; // 0은 후면 카메라
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
Range<Integer> exposureRange = characteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);
int maxExposure = exposureRange.getUpper(); // 최대 노출 보정 값
int minExposure = exposureRange.getLower(); // 최소 노출 보정 값
int exposureStep = characteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP).intValue(); // 노출 보정 값 단계
int exposureValue = <원하는 노출 보정 >;
if (exposureValue > maxExposure) exposureValue = maxExposure;
else if (exposureValue < minExposure) exposureValue = minExposure;

CaptureRequest.Builder captureBuilder = mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON); // 자동 노출 모드
captureBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, exposureValue); // 원하는 노출 보정 값
mCamera.setRepeatingRequest(captureBuilder.build(), null, null);

마치며

카메라 노출 보정은 사진이나 동영상의 품질을 향상시키는 데 중요한 요소입니다. 안드로이드의 Camera 클래스나 Camera2 API를 사용하여 간편하게 노출 보정을 조절할 수 있습니다.

본 문서는 안드로이드 공식 문서와 Android Developers 웹사이트를 참고하여 작성되었습니다.