Android多媒体功能开发(7)——使用SoundPool类播放音频
一个SoundPool对象可以载入多个音频音频应用,每个音频载入后对应一个SoundID。
使用SoundPool的基本流程是:创建一个SoundPool对象、载入要播放的音频、播放某个音频、停止播放某个音频。 一个SoundPool对象可以载入多个音频音频应用,每个音频载入后对应一个SoundID。播放某个音频时用SoundID指定要播放的音频,并返回播放该音频的ChannelID。要停止播放某个音频,需要通过其ChannelID,注意不是SoundID!使用SoundPool播放音频的示意图如下: 下面用SoundPool编写一个播放音效的应用,可以单次、循环播放音效,界面如下: 有的设备上循环播放参数无效,可以采用Thread来实现。应用主要代码如下: SoundPool类的主要方法包括: 1)构造函数:SoundPool(int maxStreams, int streamType, int srcQuality)。第一个参数maxStreams指定同时支持多少个声音,即Channel数量;第二个参数streamType指定声音类型,一般游戏中用AudioManager.STREAM_MUSIC;第三个参数srcQuality指定声音品质,目前没用,给0即可。 2)载入音频的load方法一共有4个,这里只列出最常用的两个: int load(Context context, int resld, int priority):从 resld 所对应的资源加载音频 int load(String path, int priority):从path对应的文件去加载音频 priority参数,目前没用,Android建议设为1,保持和未来的兼容性;加载音频之后都会返回该声音的ID,以后可以通过ID来播放指定音频。 3)播放音频:int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)。第一个参数soundID指定播放哪个声音;第二三个参数leftVolume、rightVolume指定左、右的音量;第四个参数priority指定播放声音的优先级,数值越大,优先级越高;第五个参数loop指定是否循环,0为不循环,-1为循环;经测试目前无效;第六个参数rate指定播放的比率,数值可从0.5到2, 1为正常比率;返回播放该音频的ChannelID,也叫StreamID,用此ID来对播放进行控制,如停止、暂停等。 4)卸载音频:boolean unload(int soundID)。卸载soundID指定的音频,成功返回true。 5)释放所有资源:void release()。 例子的完整代码如下:
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |