안드로이드 MediaPlayer


MediaPlayer vs AudioManager

MediaPlayer : 사운드 및 동영상 재생 AudioManager : 기기의 오디오 소스및 오디오 출력을 관리

필요 권한

<uses-permission android:name=“android.permission.INTERNET” />

WAKE_LOCK <uses-permission android:name=“android.permission.WAKE_LOCK” /> 화면 어두워지는 것 방지, 절전모드 들어가는 것 방지하려면 MediaPlayer.setScreenOnWhilePlaying()이나 MediaPlayer.setWakeMode() 메서드를 사용할 경우 필요

로컬 리소소

처음부터 /res/raw 에 넣어놓은 mp3

var mediaPlayer: MediaPlayer? = MediaPlayer.create(context, R.raw.sound_file_1)
mediaPlayer?.start() // no need to call prepare(); create() does that for you

콘텐츠 리졸버에서 가져올 수 있는 것과 같은 내부 URI

val myUri: Uri = .... // initialize Uri here
val mediaPlayer: MediaPlayer? = MediaPlayer().apply {
    setAudioStreamType(AudioManager.STREAM_MUSIC)
    setDataSource(applicationContext, myUri)
    prepare()
    start()
}

외부 URL 스트리밍도 가능

val url = "http://........" // your URL here
val mediaPlayer: MediaPlayer? = MediaPlayer().apply {
    setAudioStreamType(AudioManager.STREAM_MUSIC)
    setDataSource(url)
    prepare() // might take long! (for buffering, etc)
    start()
}

비동기 호출

prepare() -> prepareAsync() 콜백 함수를 이용할 것 setOnPreparedListener() 를 통해 구성할 수 있음 MediaPlayer.OnPreparedListener 의 onPrepared() 에서 처리

상태관리

setDataSource() 를 호출하면 초기화상태로 가고. 이때 prepare() 를 하고 완료되면 준비상태가 된다. 이제 start() 를 호출

이 시점에, pause(), seekTo() 호출가능 playbackCompleted 상태는 재생끝난 상태…

stop() 을 호출하면 MediaPlayer를 다시 준비할 때까지 start() 사용 못함

해제

release() onStop() 이 호출되면 해제하도록…

mediaPlayer?.release()
mediaPlayer = null


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다