在Android中,SoundPool是用于播放音頻的類
import android.media.SoundPool;
// ...
private SoundPool soundPool;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化SoundPool
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
soundPool = new SoundPool.Builder().setMaxStreams(1).build();
} else {
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
}
}
這里,我們根據Android版本創建了一個SoundPool對象。對于Android Lollipop(5.0)及更高版本,我們使用setMaxStreams(1)
限制同時播放的音頻流數量。對于較舊的版本,我們使用默認設置創建SoundPool。
res/raw
文件夾中。然后,使用以下代碼加載音頻資源:int soundId = soundPool.load(this, R.raw.your_audio_file, 1);
這里,your_audio_file
是您的音頻文件名(不包括擴展名)。
AudioManager
。首先,獲取AudioManager實例:AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
接下來,設置音量。setStreamVolume()
方法接受三個參數:音頻流類型、音量級別和標志。對于媒體播放,音頻流類型為AudioManager.STREAM_MUSIC
。音量級別范圍從0(最低)到1(最高)。
// 設置音量級別(0-1)
float volume = 0.5f;
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, (int) (volume * AudioManager.MAX_STREAM_VOLUME), 0);
現在,當您使用SoundPool播放音頻時,音量將設置為指定的級別。
soundPool.play(soundId, 1, 1, 0, 0, 1);
這里,soundId
是我們之前加載的音頻資源的ID。
onDestroy()
方法中,不要忘記釋放SoundPool資源:@Override
protected void onDestroy() {
super.onDestroy();
if (soundPool != null) {
soundPool.release();
soundPool = null;
}
}
現在,您已經成功設置了Android SoundPool的音量。