
안녕하세요 이번 포스팅은 안드로이드에서 소리를 재생하는 방법중 대표적인 방법인 Mediaplayer와 SoundPool에 대해 포스팅 하겠습니다.
MediaPlayer는 Android에서 미디어 파일을 재생하는 데 사용되는 가장 일반적인 클래스입니다. 이 클래스는 오디오 및 비디오 파일을 스트리밍할 수 있으며, 많은 양의 데이터를 처리할 수 있습니다. 따라서 MediaPlayer는 상대적으로 긴 음악 파일이나 동영상 파일을 재생할 때 사용됩니다.
MediaPlayer의 단점으로는 메모리 및 CPU 사용량이 높은 편이며, 간혹 응답 시간이 느릴 수 있다는 점입니다. 따라서 효율성과 속도보다는 기능성과 범용성을 중시할 때 많이 사용됩니다.
SoundPool은 작고 짧은 사운드 클립을 빠르게 재생하는 데 사용되는 클래스입니다. 이 클래스는 여러 사운드 클립을 동시에 재생할 수 있으며, 사운드의 볼륨과 우선 순위를 조절하는 기능도 제공합니다. 보통 게임이나 사용자 인터페이스의 사운드 효과 등을 제어할 때 주로 사용됩니다.
SoundPool은 MediaPlayer보다 효율성과 속도에 중점을 두고 있지만, 재생할 수 있는 사운드 클립의 크기나 길이에 제한이 있고 스트리밍 기능을 제공하지 않으므로 모든 사운드 클립을 미리 로드해야 합니다. 제 경험상 8~9초 정도 길이의 사운드 부터는 MediaPlayer를 사용해야 했습니다.
| SoundPool | MediaPool |
|---|---|
| 짧은 사운드 재생에 효과적(최대 10초) | 긴 사운드 재생에 효과적 |
| 사운드 연타 기능 구현 가능(게임, UI사운드 효과) | 음악 재생, 동영상 재생 |
| 메모리 사용량 낮음 | 메모리 사용량 높음 |
| CPU 사용량 낮음 | CPU 사용량 높음 |
| 동시 재생 가능 | 동시 재생 불가 |
간단한 비교이니 더 자세한 기능은
https://developer.android.com/reference/android/media/SoundPool
https://developer.android.com/guide/topics/media/mediaplayer?hl=ko
에서 찾아보시면 더욱 자세하게 알 수 있습니다.