=================================
=================================
=================================
출처: http://gogorchg.tistory.com/entry/Android-SoundPool-%EC%8B%9C%EC%9E%91-%EB%B0%8F-%EC%A0%95%EC%A7%80
어플리케이션으로 배경을 깔기 위해 음악실행을 알아보는 중에
SoundPool이라는 클래스에 대해 알게 되었습니다.
우선, 저의 가장 큰 목적은!
어플리케이션이 돌아가는 동안 음악 소리가 계속 나야 한다는 것이다.
그래서 SoundPool 클래스를 static 변수로 만들어서
초기화는 첫번째 Activity에서 해주고
모든 제어는 이 클래스 변수 하나만 가지고 조절하는 쪽으로 했다.
public static SoundManager soundManager;
public static int musicStreamId;
@Override
protected void onCreate(Bundle pSavedInstanceState) {
// 배경 음악 셋팅
if(soundManager == null){
soundManager = new SoundManager();
soundManager.initSounds(getBaseContext());
soundManager.addSound(1, R.raw.sound);
}
super.onCreate(pSavedInstanceState);}
@Override
protected void onResume() { // 배경 음악 실행 후 스트림 ID저장 (종료시 필요) musicStreamId = soundManager.playLoopedSound(1); super.onResume();}
음악 정지 부분 (Test는 static 변수를 저장 시킨 클래스 명입니다. )
Test.soundManager.stopSound(Intro.musicStreamId);
SoundManager클래스 : 구글링으로 가져왔는데 사이트 주소를 잊어버렸어요..
만드신분 죄송...ㅠㅠ
package com.motiveflux.rcraft;
import java.util.HashMap;
import android.content.Context;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.media.SoundPool;
public class SoundManager {
private SoundPool mSoundPool;
private HashMap<Integer, Integer> mSoundPoolMap;
private AudioManager mAudioManager;
private Context mContext;
public SoundManager()
{
}
public void initSounds(Context theContext) {
mContext = theContext;
mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
mSoundPoolMap = new HashMap<Integer, Integer>();
mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
}
public void addSound(int Index,int SoundID)
{
mSoundPoolMap.put(Index, mSoundPool.load(mContext, SoundID, 1));
}
public int playSound(int index) {
int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
return mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f);
}
public int playLoopedSound(int index) {
int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
return mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, -1, 1f);
}
public void stopSound(int streamId) {
mSoundPool.stop(streamId);
}
}
playSound와 playLoopedSound함수의 리턴 값은 streamId 입니다. 종료 할 떄 필요하죠^^
우선 기본 샘플은 첨부 시켰습니다.
이 샘플 만드신분 다시 한번 죄송한 말씀을 드리면서..
오늘도 모두들 즐코딩!
// 배경 음악 셋팅
아!!! 중요한 부분이 있습니다.!!!!
항상 초기화를 할 때 사용하실 모든 음악을 Index로 설정을 해놓으세요!!!
if(soundManager == null){
soundManager = new SoundManager();
soundManager.initSounds(getBaseContext());
soundManager.addSound(Const.SOUND_INTRO_INDEX, R.raw.bgm_intro);
soundManager.addSound(Const.SOUND_BTN_INDEX, R.raw.btn);
soundManager.addSound(Const.SOUND_EXIT_INDEX, R.raw.exit);
.....}
모든 소리를 다 추가해주시고, 저 인덱스를 가지고 실행만 시키시면 됩니다.
soundManager.playSound(Const.SOUND_BTN_INDEX);
요렇게요^^
=================================
=================================
=================================
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 사운드 관련 (0) | 2013.02.26 |
---|---|
안드로이드 리소스(Resource) 폴더 생성 규칙 (0) | 2012.11.13 |
안드로이드 Android 어플리케이션 꺠끗하게 종료하는 법. 관련 (0) | 2012.11.13 |
안드로이드 Android 무선 인터넷과 GPS 상태 확인 법 관련 (0) | 2012.11.13 |
안드로이드 Android Offset까지 포함한 전체 사이즈 구하기. (0) | 2012.11.13 |