본문 바로가기

프로그래밍/Android

안드로이드 맞고 - SoundManager


Android에서 Sound 재생은 simple하다.
Load해서 재생하면 끝!
단, 메뉴 화면에서 BGM을 깔아 보았는데, pause&resume 혹은 메뉴로 재진입시 재생이 안되는 문제가 남아있다.
SoundPool은 재생중인지 확인하는 Method는 없는 것일까?

어찌되었든, 미디어 볼륨 값을 사용하여 재생한다.


[SoundPool생성 및 음원 로드]
AudioManager audioMngr;
SoundPool soundPool;
HashMap<Integer, Integer> soundPoolMap;
float fStreamVolume;

soundPool = new SoundPool(5, AudioManager.STREAM_SYSTEM, 0);
soundPoolMap = new HashMap<Integer, Integer>();
audioMngr = (AudioManager)컨택스트.getSystemService(Context.AUDIO_SERVICE);

soundPoolMap.put(사운드아이디, soundPool.load(mContext, R.raw.사운드파일명, 1))
soundPoolMap.put(사운드아이디, soundPool.load(mContext, R.raw.사운드파일명, 1))
soundPoolMap.put(사운드아이디, soundPool.load(mContext, R.raw.사운드파일명, 1))


[재생 및 정지]
int nStreamID = soundPool.play(soundPoolMap.get(사운드아이디), fStreamVolume, fStreamVolume, 0, nLoop, 1.0f);
soundPool.stop(nStreamID);


[볼륨값 로드]
StreamVolume = (float)audioMngr.getStreamVolume(AudioManager.STREAM_MUSIC) / (float)audioMngr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);


[볼륨값 조절]
if (KeyEvent.KEYCODE_VOLUME_DOWN == nKey)
    audioMngr.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 1);
else if (KeyEvent.KEYCODE_VOLUME_UP == nKey)
    audioMngr.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 1);

fStreamVolume = (float)audioMngr.getStreamVolume(AudioManager.STREAM_MUSIC) / (float)audioMngr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

if (INVALID != nBGMStream)
    soundPool.setVolume(nBGMStream, fStreamVolume, fStreamVolume);

'프로그래밍 > Android' 카테고리의 다른 글

안드로이드 맞고 - GameMenu  (0) 2010.12.06
안드로이드 맞고 - DrawManager  (0) 2010.12.06
안드로이드 맞고 - DataManager  (0) 2010.12.06
안드로이드 맞고 - class  (0) 2010.12.06
안드로이드 맞고 - rule  (0) 2010.12.06