CameraX로 안드로이드 카메라 개발하기 📸
"카메라 기능, Jetpack으로 더 쉽고 강력하게!" 안드로이드 앱을 개발할 때 카메라 기능을 구현해야 한다면 한 번쯤은 고생한 경험이 있을 겁니다. 하지만 이제 CameraX를 사용하면 훨씬 쉽게 카메라 기능을 추가할 수 있습니다. CameraX는 Android Jetpack 라이브러리의 일부로, 최신 카메라 기능을 간편하게 사용할 수 있도록 도와줍니다. 이 글에서는 CameraX를 활용하여 안드로이드 카메라 기능을 구현하는 방법을 간략히 소개하겠습니다. 1. CameraX란 무엇인가? CameraX는 Android Jetpack 라이브러리의 일부로, 카메라 앱 개발을 단순화해줍니다. 기존 Camera API와 비교해서 몇 가지 장점이 있죠. 단순한 사용법: 기존 카메라 구현 코드의 복잡함을 줄여줍니다. 호환성: 다양한 기기와 버전에 맞게 최적화됩니다. 안정적 성능: 하드웨어 최적화로 더 부드러운 실행이 가능합니다. 기본 제공 기능: 이미지 캡처, 비디오 녹화, 실시간 프리뷰 기능을 기본 제공합니다. ** dependencies { // CameraX core library def camerax_version = "1.1.0" implementation "androidx.camera:camera-core:$camerax_version" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-lifecycle:$camerax_version" implementation "androidx.camera:camera-view:1.0.0-alpha27" } 이후 Manifest 파일에 카메라 권한을 추가해 주세요. AndroidManifest.xml <uses-permission android:name="android.permission.CAMERA" /> 3. CameraX로 카메라 프리뷰 구현하기 🎥 카메라 프리뷰를 화면에 표시하려면 PreviewView를 사용하면 됩니다. 레이아웃 파일에 PreviewView 추가하기 <androidx.camera.view.PreviewView android:id="@+id/previewView" android:layout_width="match_parent" android:layout_height="match_parent" /> MainActivity에서 CameraX 초기화 val previewView: PreviewView = findViewById(R.id.previewView) val cameraProviderFuture = ProcessCameraProvider.getInstance(this) cameraProviderFuture.addListener({ val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get() val preview = Preview.Builder().build() preview.setSurfaceProvider(previewView.surfaceProvider) val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA cameraProvider.bindToLifecycle(this, cameraSelector, preview) }, ContextCompat.getMainExecutor(this)) 여기까지 설정하면 카메라 프리뷰가 화면에 나타납니다! 4. 이미지 캡처 기능 추가하기 📸 이미지 캡처를 구현하기 위해 ImageCapture 객체를 사용합니다. ImageCapture 초기화 val imageCapture = ImageCapture.Builder().build() 버튼 클릭 시 사진 촬영하기 val photoFile = File(externalMediaDirs.firstOrNull(), "photo.jpg") val outputOptions = ImageCapture.OutputFileOptions.Builder(photoFile).build() imageCapture.takePicture( outputOptions, ContextCompat.getMainExecutor(this), object : ImageCapture.OnImageSavedCallback { override fun onImageSaved(output: ImageCapture.OutputFileResults) { Toast.makeText(this@MainActivity, "사진 저장 완료", Toast.LENGTH_SHORT).show() } override fun onError(exception: ImageCaptureException) { Log.e("CameraX", "사진 저장 실패: ${exception.message}") } }) 이제 버튼을 누르면 사진이 저장됩니다! 5. 결론: CameraX로 더 쉽고 빠르게 개발하자! CameraX는 복잡한 카메라 기능을 빠르게 구현할 수 있는 강력한 도구입니다. 특히 호환성과 단순한 사용법 덕분에 초보 개발자도 쉽게 사용할 수 있다는 점이 큰 장점이죠. 앱에 카메라 기능이 필요하다면 꼭 한 번 CameraX를 사용해 보세요. 개발의 효율성을 높이면서 더 나은 사용자 경험을 제공하는 것이 가능해집니다.