[android] 안드로이드 카메라 터치 포커스

안드로이드 카메라 앱을 개발할 때, 사용자가 특정 지점을 터치하여 해당 지점에 초점을 맞추는 터치 포커스 기능을 구현하고 싶을 때가 있습니다.

이 글에서는 터치 포커스를 구현하는 방법과 주의할 점에 대해 알아보겠습니다.

1. 터치 이벤트 처리하기

가장 먼저, 카메라 미리보기 화면에서의 터치 이벤트를 처리해야 합니다.

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        // 터치한 좌표를 기준으로 포커스를 맞추는 코드 구현
    }
    return true;
}

2. 포커스 맞추기

터치한 위치를 기준으로 카메라에 포커스를 맞추려면 다음과 같이 사용할 수 있습니다.

Rect focusRect = calculateTapArea(event.getX(), event.getY(), 1f);
Rect meteringRect = calculateTapArea(event.getX(), event.getY(), 1.5f);

Camera.Parameters parameters = mCamera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
parameters.setFocusAreas(Arrays.asList(new Camera.Area(focusRect, 1000)));
parameters.setMeteringAreas(Arrays.asList(new Camera.Area(meteringRect, 1000)));
mCamera.setParameters(parameters);
mCamera.autoFocus(null);

3. 주의할 점

카메라의 포커스를 터치로 조절하는 기능을 구현할 때, 일부 기기 및 카메라 모듈에서는 지원되지 않을 수 있습니다. 따라서 카메라 기능을 구현할 때 이 점을 고려하여야 합니다.

위와 같은 방법으로 안드로이드 카메라 앱에서 터치 포커스를 구현할 수 있습니다.

더 많은 정보가 필요하다면, 공식 Android 문서를 참고하시기 바랍니다.

Android Camera API