Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터바인딩
- VisualStudio
- aPK
- 안드로이드 스튜디오
- bitbucket
- Android
- not working
- 디버깅
- git인증
- react-native
- 개발환경설정
- AWS
- react
- 안드로이드
- Git
- 인증문제해결
- 설정
- gradle
- 리액트
- 리액트 네이티브
- EC2
- sourcetree
- 예제
- Kotlin
- flutter
- 빌드 오류
- WPF
- Invalid credentials
- 안됨
- 뒤로가기 안됨
Archives
- Today
- Total
물에 살고싶은 개발자
[CameraView] 사용하기 쉬운 카메라 라이브러리 기본 사용법 본문
프로젝트에서 커스텀 카메라를 사용할 일이 있었다. 처음엔 안드로이드 자체지원하는 카메라X를 사용했지만..
사용법도 그리 심플하지만은 않았고, 무엇보다 카메라를 바인딩하는 과정에서 자잘한 문제가 발생하는걸 확인. 결국 고민하다 해당 라이브러리를 사용하게 되었기에 기본 사용법에 대한것들을 남기고자 한다.
바로 시작 !
1. 설치 - 아래 두가지만 수행해주자
repositories 추가 -> 버전에 따라 다르지만 글쓰는 날짜 기준으로는 setting.gradle에 추가해줘야한다.
repositories {
mavenCentral()
}
dependencies 추가
dependencies {
api 'com.otaliastudios:cameraview:2.7.2'
}
2. 카메라뷰 추가
카메라를 사용할 액티비티나 프래그먼트의 레이아웃에 뷰 추가
<com.otaliastudios.cameraview.CameraView
android:id="@+id/camera"
android:keepScreenOn="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
마찬가지로 코드에 초기화 추가 -> 라이프사이클을 연결해줌으로써 따로 컨트롤할 필요가 없어진다.
binding.camera.setLifecycleOwner(viewLifecycleOwner)
이제 사진,동영상을 찍거나 전,후면 카메라 전환은 전부 카메라뷰 객체를 통해 하면 된다.
아래는 기본적인 사용법들이다. 코드에 주석을 달아놧으니 알기 어렵진 않을것이다.
binding.apply {
// 사진 또는 동영상 결과 나오는 리스너
camera.addCameraListener(object : CameraListener() {
// 사진 촬영 결과 리스너
override fun onPictureTaken(result: PictureResult) {
Log.e(TAG, "onPictureTaken")
val file = File(
requireActivity().filesDir,
"picture_${System.currentTimeMillis()}.jpg"
)
result.toFile(file) { resultFile ->
resultFile?.let {
// 사진 파일 사용
}
}
}
// 동영상 촬영 결과 리스너
override fun onVideoTaken(result: VideoResult) {
Log.e(TAG, "onVideoTaken")
result.file.apply {
// 동영상 파일 사용
}
}
// 동영상 촬영 종료 리스너
override fun onVideoRecordingEnd() {
super.onVideoRecordingEnd()
Log.e(TAG, "onVideoRecordingEnd: ")
}
// 사진 촬영 시작 리스너
override fun onPictureShutter() {
Log.e(TAG, "onPictureShutter: ")
}
// 동영상 촬영 시작 리스너
override fun onVideoRecordingStart() {
Log.e(TAG, "onVideoRecordingStart: ")
}
})
//region 카메라 관련 버튼 리스너
// 전,후면 카메라 전환 버튼 리스너
switchBtn.setOnClickListener {
camera.toggleFacing()
}
// 사진 또는 동영상 촬영 버튼 리스너
captureBtn.setOnClickListener {
// 카메라 촬영중이라면 촬영종료
if (camera.isTakingVideo) {
camera.stopVideo()
}
// 카메라 모드에 따라 다르게 실행
else if (camera.mode == Mode.PICTURE) camera.takePicture()
else if (camera.mode == Mode.VIDEO) camera.takeVideo(
File(requireActivity().filesDir, "video_${System.currentTimeMillis()}.mp4")
)
}
// 사진 모드 버튼 리스너
pictureModeBtn.setOnClickListener {
// 사진 촬영 모드로 변경
cameraViewFinder.mode = Mode.PICTURE
}
// 동영상 모드 버튼 리스너
videoModeBtn.setOnClickListener {
// 동영상 촬영 모드로 변경
cameraViewFinder.mode = Mode.VIDEO
}
//endregion
}
위 내용들이면 기본적인 사용법들은 전부 해둿으니 크게 어려울것은 없을것이다.
더 자세한 사항들은 라이브러리의 공식홈페이지 문서를 참고하자
끝!
Comments