안드로이드 카메라 줌 기능 구현
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에서 정상 작동하는것을 확인 할 수 있습니다.
참고 :
정보가 유익하셨다면 아래 공감버튼 눌러주시면 감사하겠습니다.
질문사항은 댓글로 달아주시면 성의껏 답변해드리겠습니다.
'Android' 카테고리의 다른 글
안드로이드 OpenCV 관심영역(ROI) 추출 (3) | 2018.09.03 |
---|---|
안드로이드 OpenCV 설치 (2) | 2018.09.03 |
안드로이드 핀치 줌 구현 - 멀티 터치 (0) | 2018.08.29 |
안드로이드 이미지 뷰 여백 없애기 (0) | 2018.08.28 |
[안드로이드] 비트맵 이진화 처리 (1) | 2018.08.25 |
[안드로이드] 실시간 SurfaceView 화면 캡쳐하기 (1) | 2018.08.24 |
안드로이드 특수키 제어하기 (3) | 2018.08.23 |
[Android] 안드로이드 내부 저장소 텍스트 파일 읽기 및 쓰기 (2) | 2018.08.21 |