方法說明
構造方法
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);