41일차
30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online
강의 목표
- 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
- 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
- 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
- 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.
목차 02 Basic - Ch07. 녹음기
기본 UI 구성- 권한 요청하기
- 녹음 기능 구현하기 - 1
- 녹음 기능 구현하기 - 2
- 오디오 시각화
- 마무리
권한 요청하기
녹음을 하기 위해서는, 사용자에게 디바이스 오디오 인풋을 접근할 수 있는 권한을 얻어야 한다.
녹음 권한은 privacy와 관련된 상당히 위험한 권한이기 때문에 안드로이드 규율에 따라 runtime에 권한을 요청할 필요가 있다.
위는 구글에서 제안하는 사용자 친화적인 권한 요청의 플로우 이다. 꼭 모두 지킬 필요는 없지만 이에 맞춰 개발하도록 하자.
먼저 앱이 실행되면 권한을 요청하자.
private val requiredPermissions = arrayOf(android.Manifest.permission.RECORD_AUDIO)
private fun requestAudioPermission() {
requestPermissions(requiredPermissions, REQUEST_RECORD_AUDIO_PERMISSION)
}
companion object {
private const val REQUEST_RECORD_AUDIO_PERMISSION = 201
}
companion object는 자바의 static과 같은 역할을 하는 키워드이다.
나도 이번에 처음 알았는데 검색해보니까 꽤 복잡한거 같아서 다음에 알아보고 그냥 쓰도록 하겠다....🤔 딱봐도 알겠지만 퍼미션 리퀘스트 코드가 일치하는지 대조하기 위한 상수 값이다.
요청을 했으니 자연스럽게 수신 핸들러를 오버라이딩해서 짜도록하자~
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()
}
cmd + N generator 로 함수를 찾으면 알아서 만들어줌~~!
리퀘스트 코드랑 맞는지 비교하고 요청한 권한이 승인 되었는지 확인해서 맞으면 통과 아니면 앱을 종료 시킨다.
당연히 앱 종료가 맞는건 아니구 귀찮으니까 일단은 이렇게 구현합시다. 내 앱은 개발자 친화적이니까 ㅋ
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
수강인증샷
링크
'Android > Challenge' 카테고리의 다른 글
패스트캠퍼스 챌린지 43일차 (0) | 2022.03.07 |
---|---|
패스트캠퍼스 챌린지 42일차 (0) | 2022.03.06 |
패스트캠퍼스 챌린지 40일차 (0) | 2022.03.04 |
패스트캠퍼스 챌린지 39일차 (0) | 2022.03.03 |
패스트캠퍼스 챌린지 38일차 (0) | 2022.03.02 |