方法說明
構造方法
SoundPool(int maxStreams, int streamType, int srcQuality)
maxStreams:該參數用於設定同時能夠播放多少音效,如設定為3,則最多同時可以播放3個音效
streamType:音訊類型,在遊戲中通常設定為STREAM_MUSIC
srcQuality:音頻檔案的品質,預設設定為0
載入音頻檔案public int load(Context context, int resId, int priority)
context:應用程式上下文,即調用它的Activity
resId:資源id
priority:優先順序,可以設定為1
播放音效
public final int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
soundID:播放的音樂ID
leftVolume:用來控制左聲道音量
rightVolume:用來控制右聲道音量
priority:優先順序,0最低
loop:迴圈次數,0為不迴圈,-1為永遠迴圈
rate:回放速度,該值在0.5-2.0之間,1為正常速度
暫訂播放
public final void pause(int streamID)
streamID音效ID
----------------------------------------------
HashMap soundPoolMap;
private SoundPool sp;
//在onCreate方法裡調用
void initSound() {
soundPoolMap = new HashMap();
sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
soundPoolMap.put(1, sp.load(this, R.raw.di, 1));
}
//選擇要播放那個聲音(count)
public void playSounds(int count) {
AudioManager am = (AudioManager) this
.getSystemService(this.AUDIO_SERVICE);
float audioMaxVolumn = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float audioCurrentVolumn = am
.getStreamVolume(AudioManager.STREAM_MUSIC);
float volumnRatio = audioCurrentVolumn / audioMaxVolumn;
sp.play(soundPoolMap.get(count), audioCurrentVolumn, audioCurrentVolumn, 1, 0, (float) 2.0);
}
------------------------------------
//執行個體化AudioManager對象,控制聲音
AudioManager am = (AudioManager)this.getSystemService(this.AUDIO_SERVICE);
//最大音量
float audioMaxVolumn = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//當前音量
float audioCurrentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);