wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 41일차

Kick_snare 2022. 3. 5. 23:12
728x90

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 로 함수를 찾으면 알아서 만들어줌~~!

리퀘스트 코드랑 맞는지 비교하고 요청한 권한이 승인 되었는지 확인해서 맞으면 통과 아니면 앱을 종료 시킨다.

당연히 앱 종료가 맞는건 아니구 귀찮으니까 일단은 이렇게 구현합시다. 내 앱은 개발자 친화적이니까 ㅋ


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

수강인증샷

링크

https://bit.ly/37BpXiC

 

 

 

 

 

 

728x90