애플리케이션 리소스에 저장된 미디어 파일, 파일 시스템의 독립형 파일 또는 네트워크 연결을 통해 들어오는 데이터 스트림에서 모두 MediaPlayer API를 사용해서 오디오 또는 동영상을 재생할 수 있습니다.
MediaPlayer
: 이 클래스는 사운드 및 동영상을 재생하는 기본 API 입니다.
AudioManager
: 이 클래스는 기기의 오디오 소스 및 오디오 출력을 관리합니다.
<uses-permission android:name="android.permission.INTERNET" />
MediaPlayer.setScreenOnWhilePlaying()
이나MediaPlayer.setWakeMode()
메서드를 사용한다면 이 권한을 요청해야 합니다. <uses-permission android:name="android.permission.WAKE_LOCK" />
MediaPlayer
에서는 여러 미디어 소스를 지원합니다.
(*)ContentProvider : 다른 앱에서 자신의 앱의 데이터베이스를 접근할 수 있도록 도와주는 역할
(*)ContentResolver : ContentProvider를 접근할 때에는 ContentResolver를 통해서 접근하게 됩니다. ContentResolver는 기본적으로 CRUD(Create Retreive Update Delete) 함수들을 제공하여서 이를 통해 다른 어플리케이션에 있는 데이터베이스를 조작할 수 있습니다.
res/raw
디렉터리에 저장된 로컬 원시 리소스로 오디오를 재생하는 예시입니다. var mediaPlayer: MediaPlayer? = MediaPlayer.create(context, R.raw.sound_file_1)
mediaPlayer?.start() // no need to call prepare(); create() does that for you
val myUri: Uri = .... // initialize Uri here
val mediaPlayer: MediaPlayer? = MediaPlayer().apply {
setAudioStreamType(AudioManager.STREAM_MUSIC)
setDataSource(applicationContext, myUri)
prepare()
start()
}
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()
}
MediaPlayer
는 시스템 리소스를 낭비할 수 있어서 작업이 끝나면 항상 release()
를 호출하여 할당된 시스템 리소스가 올바르게 해제되었는지 확인해야 합니다.
mediaPlayer?.release()
mediaPlayer = null
https://developer.android.com/guide/topics/media/mediaplayer?hl=ko#kotlin