欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-14 23:14:46
本文实例讲述了android开发中播放声音的两种方法。分享给大家供大家参考,具体如下: 在android中,音频、视频等多媒体元素的加入,使得应用程序的用户体验更好。可以...

本文实例讲述了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文件夹下,如下图所示。

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

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

第四行就是播放了,第一个参数为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程序设计有所帮助。

上一篇:

下一篇: