1three / kotlin-record

[Kotlin] 권한 요청에 대해 공부하는 `안드로이드` 녹음기 앱
0 stars 0 forks source link

RuntimeException on MediaRecorder.start(): "start failed" in MainActivity #1

Open 1three opened 7 months ago

1three commented 7 months ago

특정 버추얼머신 (7 Pro Device) 한정되는 에러

Issue

녹음 기능 앱을 개발하는 동안 MainActivity에서 MediaRecorder.start()를 호출할 때 "start failed" 메시지와 함께 RuntimeException이 발생했습니다. 이 문제는 오디오 녹음을 시작하려고 할 때 발생합니다.

재현 방법

  1. 앱을 시작합니다.
  2. 녹음을 시작하기 위해 녹음 버튼을 클릭합니다.
  3. 언급된 런타임 예외와 함께 앱이 충돌합니다.

기대 로직

앱이 충돌 없이 오디오 녹음을 시작하고 지정된 파일 경로에 녹음을 저장해야 합니다.

실제 동작

앱이 RuntimeException과 함께 충돌하며, MediaRecorder의 시작이 실패했음이 나타납니다.

Code Snippet

recorder = MediaRecorder().apply {
    setAudioSource(MediaRecorder.AudioSource.MIC)
    setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
    setOutputFile(fileName)
    setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)

    try {
        prepare()
        start()
    } catch (e: Exception) {
        Log.e("record APP(recording)", "Recording start failed: $e")
    }
}

시도한 해결 방법

  1. 녹음 시작 전 RECORD_AUDIO 권한이 부여되었는지 확인
  2. setOutputFile에서 지정된 파일 경로의 유효성과 쓰기 권한 확인
  3. prepare() 및 start() 주변에 예외 처리 추가하여 잠재적 문제 처리


🙏🏻 이 문제를 해결하기 위한 인사이트나 제안이 있으시면 감사하겠습니다.

1three commented 7 months ago

시도한 해결 방법 +

  1. 앱 삭제 및 재설치 View > Tool Windows > Device File Explorer > 연결된 에뮬레이터 선택 /storage/emulated/0/Android/data/(record)/cache 경로 내 audioRecord.3gp 파일 찾기 및 삭제