사운드 재생하기

Kotlin Android DEVELOPMENT IT

MediaPlayer 클래스와 SoundPool 클래스를 이용할 수 있으며, MediaPlayer 클래스의 경우 소리를 한 번만 재생하는 경우 또는 노래나 배경음 등의 경우 유용하다.
악기와 같이 연속으로 소리를 재생하는 경우에는 SoundPool 클래스가 더 유용하다.

//MediaPlayer 클래스로 사운드 재생하기
val mediaPlayer = MediaPlayer.create(this, R.row.do1)
button.setOnClickListener{ mediaPlayer.start() }

//사용이 끝나면 반드시 릴리즈 해야함
mediaPlater.release()
//SoundPool 클래스로 사운드 재생하기 (setMaxStreams는 최대 동시 플레이 가능한 음원 갯수)
val soundPool = SoundPool.Builder().setMaxStreams(8).build()

val soundId = soundPool.load(this, R.row.do1, 1)
button.setOnClickListener{ soundPool.play(soundId, 1.0f, 10f, 0, 1.0f) }

//load의 원형
load(context: Context, redId: Int, priority: Int)
//컨텍스트 지정, 재생할 row 디렉토리의 소리 파일 리소스, 우선순위 (숫자가 높으면 우선순위가 높다)

//play의 원형
play(soundId: Int, leftVolume: Float, rightVolume: Float, priority: Int, loop: Int, rate: Float)
//load()에서 반환된 음원의 id, 왼쪽 볼륨 0.0~1.0사이, 오른쪽 볼륨도 마찬가지, 우선순위 (0이 가장 낮음),
//반복 지정 (0이면 반복노노, -1이면 반복), 재생속도 (1.0이면 보통, 0.5이면 0.5배목, 2.0이면 2배속)

버전별 분기

private val soundPool = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    SoundPool.Builder().setMaxStreams(8).build()
} else {
    SoundPool(8, AudioManager.STREAM_MUSIC, 0)
}