본문 바로가기
안드로이드

[android][kotlin] 카메라 권한 얻어 사용하기

by 코드 이야기 2021. 2. 24.
728x90

 

카메라를 이용해봅시다!

 

각각

카메라 권한을 얻기 위한 구문(android developer)이랑 

카메라 앱을 이용하기 위한 구문(android developer)을 Manifest에 추가해줍시다.

<uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera"
        android:required="true" />

 

 

그리고 UI에 카메라 앱을 실행해줄 버튼을 하나 만들어줍시다.

 

 

버튼을 누르면 카메라를 이용할 수 있는 권한이 앱에 있는지 확인을 해주고,

권한이 없다면 권한을 얻어 카메라 앱을 사용하도록 해줍시다.

 

MainActivity.kt

package com.example.myapplication

import android.content.Intent
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.MediaStore
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        camera_on_btn.setOnClickListener {
            val cameraPermissionCheck = ContextCompat.checkSelfPermission(
                    this@MainActivity,
                    android.Manifest.permission.CAMERA
            )
            if (cameraPermissionCheck != PackageManager.PERMISSION_GRANTED) { // 권한이 없는 경우
                ActivityCompat.requestPermissions(
                        this,
                        arrayOf(android.Manifest.permission.CAMERA),
                        1000
                )
            } else { //권한이 있는 경우
                val REQUEST_IMAGE_CAPTURE = 1
                Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
                    takePictureIntent.resolveActivity(packageManager)?.also {
                        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
                    }
                }
            }
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == 1000) {
            if (grantResults[0] != PackageManager.PERMISSION_GRANTED) { //거부
                Toast.makeText(this@MainActivity, "거부당했쪙ㅠㅠ", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글