★24.音频

创建SoundPool对象

// 参数一:最多同时播放多少个音频。
// 参数二:音频类型,有STREAM_MUSIC等,用于区分音量控制。
// 参数三:采样率转换品质,不起作用,传入0。
SoundPool soundPool = new SoundPool(/* 数字 */, AudioManager.STREAM_MUSIC, 0);

加载音频

private void load(Sound sound) throws IOException {
    // openFd可能会抛出异常
    AssetFileDescriptor assetFileDescriptor = mAssetManager.openFd(/* 相对于Assets文件路径的文件路径(包含文件名字和拓展名) */);
    // 获取音频Id,音频Id用于播放
    int soundId = mSoundPool.load(assetFileDescriptor, /* 暂时没有作用,传入1用于未来的兼容 */);
    sound.setSoundId(soundId);
}

播放音频

if (soundId == null) {
    return;
}
// 参数1:音频ID
// 参数2、3:左右音量,(range = 0.0 to 1.0)
// 参数4:优先级,无作用传入1,用于未来兼容
// 参数5:循环模式,(0 = no loop, -1 = loop forever)
// 参数6:播放速率,(1.0 = normal playback, range 0.5 to 2.0)
mSoundPool.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f);

释放SoundPool

使用完SoundPool后需要释放。

BeatBox.java

public void release() {
    mSoundPool.release();
}

BeatBoxFragment.java

@Override
public void onDestroy() {
    super.onDestroy();
    mBeatBox.release();
}

你可能感兴趣的:(★24.音频)