간단한 슛팅게임을 책을 보며 제작하는데요
게임에서 사운드 관리가 생각처럼 되지 않아서 질문 드립니다.
게임에는 사운드 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(); 가 소용이 없게 되는거죠
사운드 관련 처리 어떻게들 하시나요 ?
생각보다 쉬운데 헤메고있을것같아서 질문드립니다.