간단한 슛팅게임을 책을 보며 제작하는데요

게임에서 사운드 관리가 생각처럼 되지 않아서 질문 드립니다.


게임에는 사운드 on/off 버튼의 기능이 있구요

bg음은 무한 반복으로 재생합니다.


onCreate에서 SoundPool을 생성하구요

soundPool.load 로 BG음악을 로드하구요

SoundPool.OnLoadCompleteListener 를 등록하여 play를 실행합니다.


onResume() , onPause() 에서 사운드를 처리하는 방법이 문제가 되는것같습니다.

onPause() 에서는 soundPool.autoPause(); 로 모두 정지 시킵니다. 

onResume()에서는 soundPool.autoResume();


그런데 이제 사운드 on/off를 시킬때.

soundPool.stop(idx) 로 일일이 재생중인 음을 끄고

soundPool.play로 재호출을 하는데 < 이부분에서 재호출 재생이 안먹히더군요

OnLoadCompleteListener  안에 log가 호출이 되야 되는데 핸들러로 등록된 로그가 처음에 한번로그만 찍히고 

on/off로는 안찍히는걸로 봐서는 아~로드를 한번만 하나보다 했는데 그래도 그밑줄에 재생이 있는데 재생이 안먹혀서요



soundPool.setOnLoadCompleteListener(mListnerLoop);//이부분안에 로그가 한번만 찍히구요

soundPool.play( (Integer)soundPoolMap.get(idx)

, streamVolume

, streamVolume

, 1

, -1

, 1f);


이런식으로 다음 play가 작동이 되지 않더군요 

정지는 잘먹습니다.

다시 재시작이 전혀 안먹히더군요

soundPool.autoResume(); 로 시작하는건 먹히지만

soundPool.autoResume();로 하려면 결국 무조건 재생이 되었다가 정지한 상태여야 이게 먹히는건니깐요

처음부터 음악이 재생안됨옵션으로 게임이 실행시에는 soundPool.autoResume(); 가 소용이 없게 되는거죠



사운드 관련 처리 어떻게들 하시나요 ?

생각보다 쉬운데 헤메고있을것같아서 질문드립니다.