일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Silver5
- fragment에서 context사용
- RecyclerView
- Android
- bronze3
- bronze2
- RETROFIT
- naver open api
- recyclerView 클릭이벤트
- Alert Dialog
- bronze4
- silver3
- LV1
- silver4
- Top-Down
- 녹음기
- 뷰클래스
- gradle설정
- 다크모드제한
- toLong()
- bottom-up
- 백준
- Kotlin
- stack
- dp
- 프로그래머스
- map
- 테마변경
- 임시저장하기
- LIS
Archives
- Today
- Total
유니 코드
[Android] 녹음기 만들기 with 코틀린(2) - 권한 요청하기 본문
권한 요청?!
공식문서를 살펴보면 녹음을 하기 위해서는 사용자에게 기기의 오디오 입력에 액세스할 것임을 알리는 메시지를 표시해해야한다고 명시되어있다. 이 때 사용하는 권한인 RECORD_AUDIO는 개인정보 보호에 위험을 초래할 수 있기 때문에 dangerous permission으로 간주하고 있다. 안드로이드 6.0이상에서는 위험한 권한을 사용하는 앱은 반드시 앱을 실행하는 도중에 사용자에게 승인을 요청하는 작업을 거쳐야한다.
음성 녹음을 위한 권한 요청
manifest에 아래와 같은 속성을 추가하여 오디오 기능을 사용하겠다고 명시한다.
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
private val requiredPermissions = arrayOf(android.Manifest.permission.RECORD_AUDIO)
요청할 권한을 담을 배열에 음성 녹음 관련 권한을 담아준다.
요청할 오디오 권한의 코드를 상수로 정의해주고 이것은 이후에 결과처리에 사용한다.
companion object{
private const val REQUEST_RECORD_AUDIO_PERMISSION = 201
}
onCreate()에서 requestPermissions를 통해 얻을 권한을 담은 리스트를 넘겨주면서 권한을 요청한다. 이에 따른 사용자의 승인결과는 onRequestPermissionsResult를 재정의하여 처리한다.
사용자에게 보낸 권한요청을 승인했는지 파악하여 처리해준다.
현재는 승인하지 않았을 경우 finish()를 통해 앱을 바로 종료하도록 하였다.
private fun requestAudioPermission(){
requestPermissions(requiredPermissions, REQUEST_RECORD_AUDIO_PERMISSION)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
val audioRecordPermissionGranted = requestCode == REQUEST_RECORD_AUDIO_PERMISSION &&
grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED
if(!audioRecordPermissionGranted){
finish()
}
}
'오늘의 공부는?! > Android' 카테고리의 다른 글
[Android] Custom Drawing (0) | 2022.02.24 |
---|---|
[Android] 녹음기 만들기 with 코틀린(3) - 녹음 기능 구현하기(MediaRecorder, MediaPlayer 사용) (0) | 2022.02.22 |
[Android] 녹음기 만들기 with 코틀린(1) - 기본 UI 구성(뷰 클래스 만들기) (0) | 2022.02.22 |
[Android] 뽀모도로 타이머 만들기 with 코틀린(3) - 효과음 넣기(SoundPool 사용) (0) | 2022.02.21 |
Comments