Android游戏开发之音效SoundPool的使用
来源:互联网 发布:阿里云服务器租用流程 编辑:程序博客网 时间:2024/05/20 00:49
Android游戏开发之音效SoundPool的使用
程序运行效果如下:
下面来讲下,整个项目的开发过程。
1、 创建Android项目,命名为SoundPool。
2、 修改main.xml文件内容,代码修改如下:
3、 在res目录下新建文件夹raw,并把两个音效文件存入其中,以供程序使用。
4、 修改主文件MyActivity.java,代码如下:
5、 单击执行,便会出现以上效果图;
下面我们来讲下在有戏开发中使用SoundPool和MediaPlay开发音效的区别:
一、 MediaPlayer 播放音频的实现步骤:
1. 调用MediaPlayer.create(context, R.raw. attack02); 利用MediaPlayer类调用create方法并且传入通过id索引的资源音频文件,得到实例;
2. 得到的实例就可以调用 MediaPlayer.star();
简单吧、其实MediaPlayer还有几个构造方法,大家有兴趣可以去尝试和实现,这里主要是简单的向大家介绍基本的,毕竟简单实用最好!
二、 SoundPlayer 播放音频的实现步骤:
1. new出一个实例 ; new SoundPool(4, AudioManager.STREAM_MUSIC, 100);第一个参数是允许有多少个声音流同时播放,第2个参数是声音类型,第三个参数是声音的品质;
2.loadId = soundPool.load(context, R.raw.himi_ogg, 1);
3. 使用实例调用play方法传入对应的音频文件id即可!
两者播放形式的利弊:
使用MediaPlayer来播放音频文件存在一些不足:
例如:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。这些缺点决定了MediaPlayer在某些场合的使用情况不会很理想,例如在对时间精准度要求相对较高的游戏开发中。
最开始我使用的也是普通的MediaPlayer的方式,但这个方法不适合用于游戏开发,因为游戏里面同时播放多个音效是常有的事,用过MediaPlayer的朋友都该知道,它是不支持实时播放多个声音的,会出现或多或少的延迟,而且这个延迟是无法让人忍受的,尤其是在快速连续播放声音(比如连续猛点按钮)时,会非常明显,长的时候会出现3~5秒的延迟,【使用MediaPlayer.seekTo() 这个方法来解决此问题】;
相对于使用SoundPool存在的一些问题:
(1). SoundPool最大只能申请1M的内存空间,这就意味着我们只能使用一些很短的声音片段,而不是用它来播放歌曲或者游戏背景音乐(背景音乐可以考虑使用JetPlayer来播放)。
(2). SoundPool提供了pause和stop方法,但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止。还有些朋友反映它们不会立即中止播放声音,而是把缓冲区里的数据播放完才会停下来,也许会多播放一秒钟。
(3). 音频格式建议使用OGG格式。使用WAV格式的音频文件存放游戏音效,经过反复测试,在音效播放间隔较短的情况下会出现异常关闭的情况(有说法是SoundPool目前只对16bit的WAV文件有较好的支持)。后来将文件转成OGG格式,问题得到了解决。
(4).在使用SoundPool播放音频的时候,如果在初始化中就调用播放函数进行播放音乐那么根本没有声音,不是因为没有执行,而是SoundPool需要一准备时间!囧。当然这个准备时间也很短,不会影响使用,只是程序一运行就播放会没有声音罢了。
- Android游戏开发之音效SoundPool的使用
- Android游戏设计之-------游戏音效的播放 SoundPool
- Android游戏开发中使用SoundPool来实现音效的播放
- Android移动开发-使用SoundPool播放音效的实现
- Android之SoundPool音效池的介绍与使用
- android 游戏音效播放 SoundPool
- 使用SoundPool播放游戏音效
- Android SoundPool即时音效的使用Demo
- Android之SoundPool播放音效
- Android 使用SoundPool播放音效
- 初学Android,多媒体之使用SoundPool播放音效(七十六)
- 初学Android,多媒体之使用SoundPool播放音效
- 【Android开发学习03】短时间的音效播放实现SoundPool
- android开发--音效音频播放SoundPool
- android使用SoundPool 播放短音效
- Android使用SoundPool播放短音效
- android+unity3D游戏开发之音效播放
- android 游戏开发之即时音效Demo
- 一切都忘了,那就重新开始
- Bind variables - The key to application performance
- log4j配置
- log4j的WriterAppender的应用
- 修改一句代码 实现购物车退出不清空[转载+修改]
- Android游戏开发之音效SoundPool的使用
- poj2488坑爹的大水题
- android的adb详解(多设备时adb调用)
- android 全部命令
- c 处理同名函数
- XBRL简介 - 2 - 元素 (Element)
- 算法分析与设计课程总结
- 5. A boaster and a liar are cousins-german. 吹牛和说慌本是同宗
- SHELL [正则表达式][grep][tr]