标签:
今天做一个小Demo用到了SoundPool,总结一下。
MediaPlayer缺点:不能重叠播放音乐,封装程度比较高,所以加载起来会比较慢。
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)停止播放
......
标签:
原文地址:http://blog.csdn.net/bless2015/article/details/46010759