当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发中播放声音的两种方法分析

Android开发中播放声音的两种方法分析

2019年07月24日  | 移动技术网IT编程  | 我要评论

nba10佳球,哈尔滨团购导航,短篇小说言情

本文实例讲述了android开发中播放声音的两种方法。分享给大家供大家参考,具体如下:

在android中,音频、视频等多媒体元素的加入,使得应用程序的用户体验更好。可以说,现在的手机,已经远远不只作为通信工具,更成为娱乐、办公的必备产品。

android提供了简单的音频api。一般大家使用的是mediaplayer播放音频,这也是最常见的一种播放声音的工具。这种工具在互联网上有大量的实例,因此在此只做简单的介绍。

对播放行为的控制是三个大家非常熟悉的方法:start()stop()pause()

通过static mediaplayer create(context, uri)这个方法,可以获得一个新创建的mediaplayer对象。

在播放过程中,有几个可以监听播放过程的监听器,如:

setoncompletionlistener(mediaplayer.oncompletionlistener listener)

监听音频播放结束;

setonerrorlistener(mediaplayer.onerrorlistener listener)

监听播放过程中的错误事件;

setonpreparedlistener(mediaplayer.onpreparedlistener listener)

prepare()被调用时触发。

然而,使用mediaplayer播放时,也有一些问题。我们知道mediaplayer在创建和销毁时都会耗费大量的系统资源,且创建和销毁的时间相对较长。此外,如果我们需要在同一时刻播放很多声音,mediaplayer是不支持的。

因此,我们需要一个更加轻量级的声音播放工具。

android提供了另外一种,叫做soundpool,它适合播放那些需要反复播放,但时间较短的音效。它支持同时播放多种声音,这些声音在系统开始时会加载到列表中,按照这些声音的id,我们可以调用这些音效。

下面我们进入一个实例看看soundpool到底是怎么工作的。

例如,现在在一个五子棋游戏中,我们需要在棋子落盘的时候播放一段声音。我们可以利用soundpool,因为它时间很短,而且需要反复播放,并且我们不希望声音占用太大资源。

先看看代码:

private soundpool soundpool;
soundpool= newsoundpool(10,audiomanager.stream_system,5);
soundpool.load(this,r.raw.collide,1);
soundpool.play(1,1, 1, 0, 0, 1);

代码非常简单,第一行是声明了一个soundpool对象,这个一般是作为类的成员属性出现的。第二行将soundpool实例化,第一个参数为soundpool可以支持的声音数量,这决定了android为其开设多大的缓冲区,第二个参数为声音类型,在这里标识为系统声音,除此之外还有audiomanager.stream_ring以及audiomanager.stream_music等,系统会根据不同的声音为其标志不同的优先级和缓冲区,最后参数为声音品质,品质越高,声音效果越好,但耗费更多的系统资源。

第三行,系统为soundpool加载声音,第一个参数为上下文参数,第二个参数为声音的id,一般我们将声音信息保存在res的raw文件夹下,如下图所示。

第三个参数为声音的优先级,当多个声音冲突而无法同时播放时,系统会优先播放优先级高的。

第四行就是播放了,第一个参数为id,id即为放入到soundpool中的顺序,比如现在collide.wav是第一个,因此它的id就是1。第二个和第三个参数为左右声道的音量控制。第四个参数为优先级,由于只有这一个声音,因此优先级在这里并不重要。第五个参数为是否循环播放,0为不循环,-1为循环。最后一个参数为播放比率,从0.5到2,一般为1,表示正常播放。

更多关于android相关内容感兴趣的读者可查看本站专题:《android多媒体操作技巧汇总(音频,视频,录音等)》、《android开发入门与进阶教程》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android数据库操作技巧总结》、《android文件操作技巧汇总》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网