[android] 안드로이드 카메라 앱

안드로이드 기기를 사용하여 사진을 찍고 저장하는 간단한 카메라 앱을 개발하는 방법에 대해 알아봅시다.

1. 안드로이드 카메라 앱 만들기

안드로이드 스튜디오를 열고 새로운 안드로이드 프로젝트를 생성합니다. 프로젝트 이름과 위치를 지정한 후 “Empty Activity” 템플릿을 선택합니다.

2. 카메라 앱의 UI 디자인

카메라 버튼과 사진을 나타낼 ImageView를 화면에 배치합니다.

<Button
    android:id="@+id/camera_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Take Picture" />

<ImageView
    android:id="@+id/picture_imageview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="16dp" />

3. 카메라 앱의 기능 구현

카메라 앱의 기능을 구현하기 위해 Camera API나 CameraX 라이브러리를 사용할 수 있습니다. 여기서는 CameraX를 사용하여 카메라 앱을 구현하는 방법을 알아봅시다.

implementation "androidx.camera:camera-core:1.1.0"
val imageCapture = ImageCapture.Builder().build()

camera_button.setOnClickListener {
    imageCapture.takePicture(ContextCompat.getMainExecutor(this), object : ImageCapture.OnImageCapturedCallback() {
        override fun onCaptureSuccess(image: ImageProxy) {
            val bitmap = image.image?.toBitmap()
            picture_imageview.setImageBitmap(bitmap)
            image.close()
        }
    
        override fun onError(exception: ImageCaptureException) {
            Log.e(TAG, "Error capturing image: ${exception.message}", exception)
        }
    })
}

4. 카메라 권한 요청

카메라를 사용하기 위해 필요한 권한을 요청해야 합니다. Manifest 파일에 카메라 권한을 추가하고, 런타임 시 권한을 요청하는 코드를 작성합니다.

<uses-permission android:name="android.permission.CAMERA" />
private val cameraPermission = Manifest.permission.CAMERA
private val permissionsRequestCode = 101

if (ActivityCompat.checkSelfPermission(this, cameraPermission) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, arrayOf(cameraPermission), permissionsRequestCode)
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
    if (requestCode == permissionsRequestCode && grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        // 카메라 권한이 승인됨
    } else {
        // 카메라 권한이 거부됨
    }
}

안드로이드 카메라 앱을 개발하는 기본적인 방법에 대해 알아보았습니다. 카메라 관련 라이브러리와 권한 요청 기능을 사용하여 사용자에게 사진 촬영 기능을 제공할 수 있습니다.

참고 자료