Camera_기술_선정 - boostcampwm-2024/and04-Nature-Album GitHub Wiki
💡 Camera 기술 선정 개요
프로젝트에 적합한 카메라 기술을 선정하기 위해, 내장 카메라 (Intent)와 CameraX의 장단점, Google Play 배포 고려 사항 등을 바탕으로 각 기술의 특성을 검토했다. 최종 기술 선정은 팀의 논의 결과를 기반으로 한다.
1️⃣ 후보 기술 개요
- 내장 카메라 (Intent)
- 시스템 기본 카메라 앱을 호출하여 간단하게 사진 촬영 및 위치 태그를 포함한 메타데이터를 저장할 수 있는 방식.
- Intent로 간단하게 구현할 수 있고 대부분의 Android 기기에서 호환 가능.
- CameraX
- Camera2 API를 기반으로 Jetpack에서 제공하는 고수준 API로, 개발자 친화적이면서도 복잡한 카메라 제어 기능을 제공.
- 커스텀 UI 구성과 GPS 상태 표시, AI 모델 연동 등 프로젝트 요구사항에 부합하는 기능을 직접 구현 가능.
2️⃣ 각 기술에 대한 분석 요약
내장 카메라 (Intent)
- 장점
- 간편한 구현: Intent 호출만으로 카메라 촬영이 가능하여 코드가 간결하고 유지보수가 쉬움.
- 기기 호환성: 대부분의 Android 기기에서 안정적으로 작동하며, 최신 SDK 대응이 불필요함.
- 위치 태그 자동 저장: 시스템 카메라 앱에서 GPS 정보를 메타데이터에 포함할 수 있어, 별도의 처리 없이 위치 정보 저장 가능.
- 단점
- 커스터마이징 제한: 시스템 기본 카메라 UI를 사용하므로 사용자 맞춤형 UI 구성에 제약이 있음.
- 기능 제한: AI 분석과 같은 실시간 프레임 처리가 필요할 경우 사용이 제한적임.
- GPS 상태 확인의 번거로움: GPS 상태를 촬영 전후로 두 번 확인해야 하는 번거로움이 있음.
CameraX
- 장점
- 사용자 맞춤형 UI 구성: 카메라 화면과 촬영 버튼을 포함한 UI 요소를 커스터마이징하여 사용자 경험을 향상시킬 수 있음.
- 고급 기능 지원: GPS 상태 표시, 촬영 버튼 비활성화와 같은 세부 제어가 가능하며, AI 모델 연동에 유리함.
- 최신 기술 지원: Jetpack 라이브러리로 최신 Android 기술 업데이트를 빠르게 적용 가능.
- 단점
- 구현 복잡성: PreviewView 등을 활용하여 구현해야 하므로 Intent 기반보다 복잡할 수 있음.
- 기기 호환성: 일부 기기에서는 CameraX 적용 시 화질 저하 또는 비호환성 문제가 발생할 수 있음.
- SDK 대응 필요: Google Play 배포를 고려할 경우 targetSdk 34 이상이 필요함.
3️⃣ 자료 조사 문서 링크
4️⃣ 논의
시스템 카메라
- CameraX를 잠깐 써봤을 때 화질이 좋지 않았었다.
- AI를 사용하더라도 매 프레임마다 돌리는 것이 아닌 최종 결과물만으로 처리하면 되는 것 아닌가?
- CameraX를 실행해보았으나 compile SDK 버전을 34 이상으로 실행하거나 라이브러리 버전을 낮춰야 한다. https://developer.android.com/jetpack/androidx/releases/camera
- 그냥 내장 카메라 쓰는 것이 오히려 더 깔끔하고 간단하게 구현할 수 있을 것 같다는 생각.
- 물론 그렇게되면 GPS상태를 두 번 확인해야하는 번거로움…
- 내장 카메라 쓰면 취소, 확인 같은 처리도 간단하게 되는 것 같다..? ← 좀 더 확인해야함
CameraX
- 후에 도입할 AI나 혹은 GPS 상태에 따른 처리를 간단하게 처리할 수 있기 때문에 CameraX가 나을 것 같다는 생각.
- Intent를 통한 카메라 전환 관련 공식문서를 찾아보려고 했는데 생각보다 자료가 없었다.
- 심지어 공식문서에는 deprecated된 코드가 아직도,,,
- GPS 상태를 카메라에 UI로 표시하여 안내할 수 있다. 또한, 우리 앱만의 디자인을 카메라에 적용할 수 있을 것 같다.
Google Play 출시 관련
-
Google Play에 출시를 하기 위해서는 targetSdk가 Android 14 (API 수준 34) 이상을 타겟팅해야 한다.
https://developer.android.com/google/play/requirements/target-sdk?hl=ko
https://support.google.com/googleplay/android-developer/answer/11926878?hl=ko
문제 상황
- 2대 2의 상황
- Google Play 출시까지 고려한다면 targetSdk는 34 이상이 충족되어야 함으로 CameraX 적용이 가능해진다. 그러나 34 미만의 기기는 CameraX가 제대로 적용되지 않는 문제가 있어 SDK 대응이 필요했다.
5️⃣ 결론
- Intent 먼저 기능 개발 후 targetSdk 34이상은 CameraX 적용해보기