[안드로이드] SoundPool 사운드재생
안드로이드에는 사운드를 재생하고 관리 할 수 있는 방법이 두가지가 있습니다. 지난번에 알아본 MediaPlayer를 이용하는 방법과 지금 알아볼 SoundPool을 이용해서 재생하는 방법인데요. 미디어 플레이어를 이용한 방법으로도 대부분의 사운드를 처리할 수 있지만 그거 하나로 게임을 제작하기는 어렵습니다.
MediaPlayer를 이용한 방법 ▶ http://kd3302.tistory.com/39 |
SoundPool을 이용해서 실행을 하려면 먼서 객체를 생성하고, 리소스를 로드해서 실행을 합니다. 객체를 생성하는 방법은 다음과 같습니다.
■ 에서 최대 스트림 개수는 동시에 재생이 가능한 최대 스트림의 갯수를 말하는 거구요. 두번째 오디오 스트림타입은 보통 AudioManager.SREAM MUSIC을 사용합니다. 샘플링 품질에는 0을 넣어주면 됩니다.
다음으로 리소스를 가져오는 방법인데요.
위에서 생성한 객체에 리소스를 로드해주고, 리소드에 대한 아이디값을 넘겨주는 방법을 사용합니다. 과정은 다음과 같습니다.
■ 첫번째 매개변수에는 콘텍스트를 받는데요. 현재 실행중인 뷰가 아닌 액티비티 값을 넣어 줍니다. 두번째에 리소스 아이디에는 로드할 사운드를 넣어주면 됩니다. 마지막 우선권에는 1을 넣어줍니다.
다음으로 사운드를 재생하는 방법입니다.
■ MediaPlayer는 start()만 호출하면 됐는데. 여기선 다양한 매개변수를 받기에 조금은 더 복잡해 보이네요. 첫번째 아이디에는 로드할때 반환하는 ID를 넣어줍니다. 좌측볼륨, 우측볼륨을 넣어주고, 네번째에 우선순위는 0으로 설정하면 됩니다. 반복할지 여부, 속도등을 넣어주면 되는데요. 이론이 이렇다 정도만 머리속으로 기억하고 집접 코딩을 해보면서 실행을 해보겠습니다.
■ 지난 번에 알아봤던 MediaPlayer 예제에 추가해서 SoundPool에 대해서 코딩을 해보겠습니다.
■ 먼저 리소스별로 아이디 값을 담아둘 변수들을 멤버 변수로 선언하고 생성자에서 SoundPool 객체를 생성해서 리소스를 로드해서 아이디 값을 넣어주겠습니다.
■ 1번에서 변수를 선언해줬구요. 2번에서는 리소스 로드를 해준겁니다. 3번 부분에서 재생을 시켜주는 과정을 진행해 보겠습니다. 배경음악은 생성자에서 실행을 해서 처음부터 계속 실행이 되게 하고 나머지는 SoundPool을 사용해서 재생하도록 코딩을 바꾸겠습니다.