MediaPlayer与SoundPooly优劣分析

MediaPlayer与SoundPooly优劣分析:
加载长音乐文件生成数据ID,可能会出现错误,错误原因可能是:利用SoundPool播放音乐文件,首先都会对需要播放的音乐文件通过load()函数进行加载,并且生成对应的音乐数据ID;其生成的数据ID(int值)就是整个音乐文件的所有数据,而假设某个长音乐文件长度有42秒,其中的音乐流数据文件也就远远超过了int 的最大值,所以当程序加载此音乐文件生成对应的数据ID时,会报超过最大值的异常。虽然出现这种异常,但还不会导致整个程序崩溃,只是当再播放长的音乐文件时,会发现播放的时间很短,明显感觉到像被剪切了一样。这也证实了SoundPool只能存放1M大小的音乐数据。

  1. 使用MediaPlayer的优缺点:
    1):缺点:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。使用MediaPlayer进行播放音乐时,尤其是在快速连续播放音乐(比如连续猛点按钮)时,会非常明显的出现1~3秒左右的延迟,可以使用MediaPlayer.seekTo()这个方法来解决。
    2):优点:支持很大的音乐文件播放,而且不会同SoundPool一样需要加载准备一段时间,MediaPlayer能及时播放音乐。
  2. 使用SoundPool的优缺点:
    1):缺点:最大只能申请1M的内存空间,意味着用户只能使用一些很短的声音片段,而不能用它来播放歌曲或游戏背景音乐。(建议用来播放游戏音效)。SoundPool提供了pause和stop方法,但建议最好不要轻易使用这些方法,因为使用它们可能会导致程序莫名其妙的终止。使用SoundPool时音频格式建议使用OGG格式。如果使用WAV格式的音频文件,在播放的情况下有时可能会出现异常关闭的情况。在使用SoundPool播放音乐文件的时候,如果在构造中就调用函数进行播放音乐,其效果则是没有声音!不是因为函数没有执行,而是SoundPool需要加载准备时间。如果这个准备时间也很短,就不会影响使用,只是程序一运行播放刚开始会没有声音而已。
    2):优点:支持多个音乐文件同时播放。在Android游戏开发中,游戏背景音乐使用MediaPlayer肯定比使用SoundPool要合适,而游戏音效的播放采用SoundPool则更好,毕竟游戏中肯定会出现多个音效同时进行播放的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值