美文网首页
Android播放简短音频-SoulPool

Android播放简短音频-SoulPool

作者: 程序猿小钟 | 来源:发表于2021-09-15 12:00 被阅读0次

    前言

    最近新接触的项目中有一个业务功能是语音播报,所以有接触到了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】到此一游~

    相关文章

      网友评论

          本文标题:Android播放简短音频-SoulPool

          本文链接:https://www.haomeiwen.com/subject/okdkgltx.html