十年专注于品牌网站建设 十年专注于品牌网站建设,低调、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

如何使用SoundPool加载音频文件

百恒网络 2017-05-31 775

如何使用SoundPool加载音频文件?下面南昌APP制作开发公司-百恒网络就来为大家揭晓,不过在介绍如何使用SoundPool加载音频文件前首先得先创建一个SoundPool对象,具体操作如下图所示。

创建SoundPool对象

Lollipop引入了新的方式创建SoundPool:使用SoundPool.Builder。不过,为了兼容API 16最低级别,只能选择使用SoundPool(int, int, int)这个老构造方法了。

第一个参数指定同时播放多少个音频。这里指定了5个。在播放5个音频时,如果尝试再播放第6个,SoundPool会停止播放原来的音频。

第二个参数确定音频流类型。Android有很多不同的音频流,它们都有各自独立的音量控制选项。这就是调低音乐音量,闹钟音量却不受影响的原因。打开文档,查看AudioManager类的AUDIO_*常量,还可以看到其他控制选项。STREAM_MUSIC使用的是同音乐和游戏一样的音量控制。

最后一个参数指定采样率转换品质,这个参数不起作用,所以这里传入0值。

接下来就开始使用SoundPool加载音频文件,相比其他音频播放方法,SoundPool还有个快速响应的优势:指令刚一发出,它就会立即开始播放,一点都不拖沓。

不过反应快也是有代价的,那就是在播放前必须预先加载音频。SoundPool加载的音频文件都有自己的Integer类型ID。如下图所示,在Sound类中添加mSoundId实例变量,并添加相应的获取方法和设置方法管理这些ID。

添加mSondId实例变量

南昌APP制作开发公司要提醒大家的是,mSoundId用了Integer类型而不是int。这样,在Sound的mSoundId没有值时可以设置其为null值。

现在处理音频加载。在BeatBox中添加一个load(Sound)方法载入音频,如下图所示。

加载音频

调用mSoundPool.load(AssetFileDescriptor, int)方法可以把文件载入SoundPool待播。为方便管理、重播或卸载音频文件,mSoundPool.load(...)方法会返回一个int型ID。这实际就是存储在mSoundId中的ID。调用openFd(String)方法有可能抛出IOException,load(Sound)方法也是如此。

现在,在BeatBox.loadSounds()方法中,调用load(Sound)方法载入全部音频文件,如下图所示。

载入全部音频文件

运行应用确认音频都已正确加载。否则,会看到LogCat中的红色异常日志。

以上就是百恒网络为大家讲的使用SoundPool加载音频文件方法,了解更多关于南昌APP开发技术资讯,欢迎来电咨询百恒网络,或者访问公司官网查看更多技术文章。


400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×