播放音频用到MediaPlayer类,具体用法如下:
我们提供的服务有:成都网站制作、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、曲靖ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的曲靖网站制作公司
我们写一个简单的例子,播放手机存储的根目录下motto.mp3文件。定义三个按钮play、pause、stop来控制播放。
另外,本范例涉及到SD卡的读取,还要在在Manifest.xml注册写SD卡的权限。
前言
最近新接触的项目中有一个业务功能是语音播报,所以有接触到了SoulPool这个类,写个文章记录一下~
如果项目业务功能中需要播放简短的音频的话,可以使用SoundPool 。SoundPool 是 Android 提供的一个API类,用来播放简短音频的,使用起来简单并且功能强大。
SoundPool 除了可以完成音频的播放、暂停、恢复及停止的操作外,还可以调节左右声道的音量值、调整播放的语速、设置播放的优先级以及播放的次数等等。
创建SoulPool
SoundPool 的创建方式在Android 5.0 以前是直接使用SoundPool 的构建方法即可,在Android5.0之后,则是使用Builder模式来创建。为了更好的兼容性,我们可以判断一下api版本进行对应的创建。
Android5.0之前SoundPool 的构造函数有三个参数分别是maxStreams、streamType和srcQuality。
maxStreams:同时播放流的最大数量,当播放的流大于此设置值时,则会选择性停止优先级较低的流;
streamType:流类型,例如STREAM_MUSIC、STREAM_ALARM、STREAM_NOTIFICATION等;
srcQuality:采样率转换器质量,很少用得上,默认设置0即可;
Android5.0 之后,使用Builder模式进行构造,可以设置多个参数。我这里放两张源码截图,如果需要详细了解的,可以自己点进去追踪一下~
SoundPool.Builder中setMaxStreams和之前Android5.0SoundPool的构造函数maxStreams参数相同。SoundPool.Builder中setAudioAttributes用来设置audio 属性,此值要么不设,要么设置不为null的值,否则会导致异常产生。
音频资源的加载与播放
首先我们要进行音频资源的加载,加载成功之后,才能进行播放。加载音频,我们可以使用SoulPool实例中的load方法。
加载音频资源时异步执行的,此过程需要时间,所以我们可以使用SoulPool中的OnLoadCompleteListener接口进行监听,其中的onLoadComplete方法则是在音频资源加载完成后调用。
我们还可以通过SoulPool中的unload方法,卸载之前加载过的资源。
其实,只要我们点进去SoulPool类中,就能看见它提供的所有方法了,如上图。
音频播放,我们是使用到了SoulPool实例中的play方法,该方法要传比较多的参数,分别是soundID、leftVolume、rightVolume、priority、loop和rate,它们分别代表的意思是:
soundID:是SoulPool加载资源load方法返回的值,指向某个已加载的音频资源;
leftVolume和rightVolume:分别代表左声道和右声道的值,设置范围在0f ~ 1f;
priority:则是流的优先级;
loop:是循环播放的次数, 例如-1是表示无限循环;
rate:则是播放的速率 ,1是正常速率,如果设置2则表示2倍速率;
play方法返回的streamID,若返回0则播放失败,其它值都代表播放成功。
图中方法还有pause、resume、stop分别代表暂停音播放、恢复音频播放和停止音频播放。SoulPool提供的方法,源码中都有,这里就不一一细说了。记得!一定要释放资源(release)
注意事项
1.SoulPool并不是什么格式的音频资源都支持的,MP3这些常见的格式当然是支持的,如果有别的格式的音频可以自己测试一下;
2.SoulPool是Android为了播放简短音频提供的api,所以尽量不要播放时间过长的音频;
3.设置播放流的优先级的问题,如果同时播放的活动流的数目超过设置的maxStreams时,会根据优先级来停止优先级较低的流;如果有多个具有相同低优先级的流,它将选择要停止的最旧流,并且该流不再有效;如果要播放的流的优先级最低,则会播放失败。
4.加载音频资源的数量限制也注意一下,别加载过多。
2021年9月15日程序猿小钟带着【播放简短音频类-SoulPool】到此一游~
向各位推荐百度网盘的会员专享功能“音频倍速”,它可以五种倍速模式随意转换,满足各种用户的需求。
步骤一:打开百度网盘APP,点击“文件”
步骤二:找到需要播放的音频文件,点击它,进入播放页面。
步骤三:点击“倍速”,即可调整倍速。