★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();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容