[android] SoundPool详解
今天做一个小Demo用到了SoundPool,总结一下。
MediaPlayer缺点:不能重叠播放音乐,封装程度比较高,所以加载起来会比较慢。
SoundPool简介
Android系统提供了另一种播放音效的类。用来加载多个音效,短促音效和多个短促音效,可自行设置声音品质,音量,重复和优先级。在一定场合还是很好用的。
属于android.media包下,继承自Object。
- 构造方法
<span style="font-size:24px;">SoundPool<span style="color:#ff0000;"> pool</span> = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);</span>指定了该池最多指定三个音频,使用用于系统声音的音频流。于AudioManager参数有很多,可以戳---> AudioManager。
- 加载数据
有四个构造方法:
- public int load(String path, int priority)
从完整文件路径名载入
path:文件路径
priority:优先级,0的优先级最低返回值:这个声音的ID,用于打开和关闭音乐。
- public int load(AssetFileDescriptor afd, int priority)
从Asset对象载入afd:一个assets文件中的描述器,可以获得assets下文件的信息;priority:返回值:
- public int load(Context context, int resId, int priority)
从APK资源获取
context:resId:文件的ID(res文件夹里的文件才有id)priority:
- public int load(FileDescriptor fd, long offset, long length, int priority)
从FileDescriptor对象载入
- 播放
<span style="font-size:24px;">//获取资源</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>AssetFileDescriptor fd = getResources().openRawResourceFd(R.raw.music)</span>
<span style="font-size:24px;">//加载音频 <span style="white-space:pre"> </span>int soundID = pool.load(fd, 1);</span>
<span style="font-size:24px;">//播放音频,soundID是上面的返回值 <span style="white-space:pre"> </span>pool.play(soundID, 1, 1, 0, 0, 1);</span>
- 释放资源及其他
release()方法释放所有SoundPool对象占据的内存和资源。
pause(soundID)暂停播放
stop(soundID)停止播放
......
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。