SeekBar를 이용한 카메라 줌인, 줌아웃 기능 제어하는 방법입니다.


먼저 Layout입니다.


<SeekBar

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/zoom"

android:max="10" />


id는 Activity에서 사용할 id로 설정해주시면 되고, max는 최대 크기입니다. 10으로 설정 시 1~10까지 seekbar의 칸이 분리됩니다.


다음 Activity입니다.


ZoomseekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

int Zoom = progress * 6;


if(CameraPreview.params.getMaxZoom() < Zoom) {

Zoom = CameraPreview.params.getMaxZoom();

}

CameraPreview.params.setZoom(Zoom);

CameraPreview.mCamera.setParameters(CameraPreview.params);

}


@Override

public void onStartTrackingTouch(SeekBar seekBar) { }

@Override

public void onStopTrackingTouch(SeekBar seekBar) { }

});


SeekBar의 값 변경 시 호출되는 onProgressChanged 함수에서 처리해주시면 됩니다.

휴대폰 기종마다 지원되는 줌 크기가 다르기 때문에

Parameter의 getMaxZoom() 함수를 통해 최대 줌 크기값을 받아 올 수 있습니다.

제 기종의 경우 MaxZoom 값이 60이 나오네요.

애초에 SeekBar의 max 크기를 10으로 주었기 때문에,

Zoom값은 progress * 6 으로 설정했습니다.


setZoom()을 통해 줌 값을 넘겨주고, 파라미터 설정을 해주면 CameraPreview에서 정상 작동하는것을 확인 할 수 있습니다.

 


참고 : 

안드로이드 SurfaceView 카메라 연동

안드로이드 SurfaceView 화면 캡쳐



정보가 유익하셨다면 아래 공감버튼 눌러주시면 감사하겠습니다.

질문사항은 댓글로 달아주시면 성의껏 답변해드리겠습니다.


to Top