Beeeam

앱 내부에서 카메라 실행시키기 본문

Android

앱 내부에서 카메라 실행시키기

Beamjun 2023. 4. 19. 01:27

졸작하는데 카메라를 연동 해야하는 작업이 생겨서 카메라를 연동하는 작업을 해봤다. 

먼저 카메라를 사용하려면 카메라 권한부터 설정 해야한다.

 

AndroidManifest.xml

<!--    카메라 권한 설정-->
    <uses-permission android:name="android.permission.CAMERA"/>
<!--    저장소 권한 설정-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-feature
        android:name="android.hardware.camera2"
        android:required="true"/>

메니페스트에 위의 코드를 추가하여 카메라와 저장소 권한을 설정한다.

 

const val REQUEST_IMAGE_IMAGE_CAPTURE = 1

...

// 카메라 실행
    private fun openCamera() {
        val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        try {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_IMAGE_CAPTURE)
        } catch (e: ActivityNotFoundException) {
            Toast.makeText(context, "카메라 왜 안됌??", Toast.LENGTH_SHORT).show()
        }
    }

인텐트를 사용하여 카메라 동작하게 한다. 그리고 try catch를 사용하여 다른 모든 예외를 처리한다. 

근데 이렇게만 실행 시켰을 땐 오류가 생길 수 있다. (이거 때문에 몇 시간 동안 구글링 함;;)

이럴 땐 카메라 권한을 사용자에게 받으면 해결된다.

 

// 카메라 권한이 있는지 확인하고, 없으면 권한 요청
    private fun checkCameraPermission() {
        // 카메라 권한이 있는지 확인
        if (context?.let { ContextCompat.checkSelfPermission(it, Manifest.permission.CAMERA) }
            != PackageManager.PERMISSION_GRANTED) {
            // 권한이 없으면 권한 요청
            ActivityCompat.requestPermissions(context as Activity,
                arrayOf(Manifest.permission.CAMERA),
                REQUEST_CAMERA_PERMISSION)
        }
        else {
            // 권한이 있으면 카메라 실행
            openCamera()
        }
    }

위의 코드를 추가하고 실행하면 밑과 같은 창이 뜨면서 사용자에게 권한을 받는다. 

여기서 허용을 누르면 카메라 권한이 허용이 되고 앱 내부에서 카메라를 동작 시킬 수 있다.

 

'Android' 카테고리의 다른 글

Splash screen api  (0) 2023.06.01
Custom View  (2) 2023.05.13
안드로이드 스튜디오 타이틀 바 제거하기  (0) 2023.04.14
Hilt?  (0) 2023.04.11
의존성과 의존성 주입(DI) + Hilt란?  (0) 2023.04.07