它适合播放那些需要反复播放,但时间较短的音效。它支持同时播放多种声音,这些声音在系统开始时会加载到列表中,按照这些声音的id,我们可以调用这些音效。
成都创新互联服务项目包括工布江达网站建设、工布江达网站制作、工布江达网页制作以及工布江达网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,工布江达网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到工布江达省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
1、创建一个SoundPool对象:new SoundPool(int maxStreams, int streamType, int srcQuality);
第一个参数为soundPool可以支持的声音数量,这决定了Android为其开设多大的缓冲区,第二个参数为声音类型,最后参数为声音品质,品质越高,声音效果越好,但耗费更多的系统资源。
2、从资源或者文件载入音频流:
int load(Context context, int resId, int priority) //从APK资源载入
int load(FileDescriptor fd, long offset, long length, int priority) //从FileDescriptor对象载入
int load(AssetFileDescriptor afd, int priority) //从Asset对象载入
int load(String path, int priority) //从完整文件路径名载入
priority为优先级
3、播放声音play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
第一个参数为id,id即为放入到soundPool中的顺序,比如现在collide.wav是第一个,因此它的id就是1。第二个和第三个参数为左右声道的音量控制。第四个参数为优先级,由于只有这一个声音,因此优先级在这里并不重要。第五个参数为是否循环播放,0为不循环,-1为循环。最后一个参数为播放比率,从0.5到2,一般为1,表示正常播放。
代码如下:
private SoundPool soundPool;
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 5);
final int load = soundPool.load(this, R.raw.wen, 1);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(load, 1, 1, 0, 0, 1);
}
});
注意点:
1. SoundPool最大只能申请1M的内存空间,这就意味着我们只能用一些很短的声音片段,
而不是用它来播放歌曲或者做游戏背景音乐。
2. SoundPool提供了pause和stop方法,但这些方法建议最好不要轻易使用, 因为有些时候它们可能会使你的程序莫名其妙的终止。
3. SoundPool的效率问题。其实SoundPool的效率在这些播放类中算是很好的了,但是有的朋友在G1中测试它还是有100ms左右的延迟,这可能会影响用户体验。
网页名称:Android中SoundPool放声音
本文网址:https://www.cdcxhl.com/article2/gjocic.html
成都网站建设公司_创新互联,为您提供动态网站、网站设计公司、自适应网站、企业网站制作、响应式网站、网站改版
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联