오류 내용

안드로이드 내장 미디어 플레이어인 MediaPlayer사용 중, 미디어 실행 메서드인 start() 사용시 아래 오류 발생

E/MediaPlayerNative: start called in state 4, mPlayer(0x7d5ed0c41450) error (-38, 0)
E/MediaPlayer: Error (-38,0)

 

 

오류 원인

아래 MediaPlayer의 생명주기에 따라 prepare()를 하고 start()를 진행하게 되는데, prepare가 완료되지 않은 상태에서 start를 수행했을 때 위와 같은 오류 발생

 

 

해결 방법

prepare가 완료되었을 떄 start를 수행하기 위해 prepare가 완료되었을 때 호출되는 setOnPreparedListener 내부로 start()를 옮긴다.

 

수정 전

var mediaPlayer = MediaPlayer()
mediaPlayer.setDataSource(context, uri)
mediaPlayer.prepareAsync()
mediaPlayer.start()

 

수정 후

var mediaPlayer = MediaPlayer()
mediaPlayer.setDataSource(context, uri)
mediaPlayer.prepareAsync()
mediaPlayer.setOnPreparedListener {
    mediaPlayer.start()
}