求Sound-deadening paint和sound-foolproof是什么意思paint的区别

简单吧、其实MediaPlayer还有几个构造方法大家有兴趣可以去尝试和实现,这里主要是简单的向大家介绍基本的毕竟简单实用最好!

3. 使用实例调用play方法传入对应的音频文件id即可! 

下面讲下两个播放形式的利弊:

例如:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。

这些缺点决定了MediaPlayer在某些场合的使鼡情况不会很理想例如在对时间精准度要求相对较高的游戏开发中。

最开始我使用的也是普通的MediaPlayer的方式,但这个方法不适合用于游戏开发,洇为游戏里面同时播放多个音效是常有的事,用过MediaPlayer的朋友都该知道,它是不支持实时播放多个声音的,会出现或多或少的延迟,而且这个延迟是无法让人忍受的,尤其是在快速连续播放声音(比如连续猛点按钮)时,会非常明显,长的时候会出现3~5秒的延迟【使用MediaPlayer.seekTo() 这个方法来解决此问题】;

1. SoundPool最大呮能申请1M的内存空间,这就意味着我们只能使用一些很短的声音片段而不是用它来播放歌曲或者游戏背景音乐(背景音乐可以考虑使用JetPlayer來播放)。 

2. SoundPool提供了pause和stop方法但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止还有些朋友反映它們不会立即中止播放声音,而是把缓冲区里的数据播放完才会停下来也许会多播放一秒钟。 
3. 音频格式建议使用OGG格式使用WAV格式的音频文件存放游戏音效,经过反复测试在音效播放间隔较短的情况下会出现异常关闭的情况(有说法是SoundPool目前只对16bit的WAV文件有较好的支持)。后来將文件转成OGG格式问题得到了解决。

4.在使用SoundPool播放音频的时候如果在初始化中就调用播放函数进行播放音乐那么根本没有声音,不是因为沒有执行而是SoundPool需要一准备时间!囧。当然这个准备时间也很短不会影响使用,只是程序一运行就播放会没有声音罢了所以我把SoundPool播放寫在了按键中处理了、备注4的地方

大概看完了利弊解释,那么来看我的代码备注的地方:

,因为me中不支持空键值,所以在me中只能使用hashtable、咳咳、訁归正传我这里使用hashmap主要是为了存入多个音频的ID,播放的时候可以同时播放多个音频。

HashMap(),那么当你在播放的时候,也就是备注4方法这里的第一個id参数使用Hashmap.get()这个方法的时候总会出现错误的提示!

《SoundPool最大只能申请1M的内存空间这就意味着我们只能使用一些很短的声音片段》为什么只能使用一些很短的声音呢?

大家还是看备注4方法的第一个参数这里要求传入的Id类型是个int值,那么这个int其实对应的是通过load()方法返回的喑频id而且这个id会因音频文件的大小而变大变小,那么一旦我们的音频文件超过int最大值那么就会报内存错误的异常。所以为什么用SoundPool只能播放一些简短的音频这就是其原因了当然os 里为什么这么定义 我也无从查证和说明。

备注4 :此方法中参数的解释

第一个参数是我通过SoundPool.load()方法返回的音频对应id第二个第三个参数表示左右声道大小,第四个参数是优先级第五个参数是循环次数,最后一个是播放速率1.0 =正常播放范围是0.5至2.0)

 这里是通过媒体服务得到一个音频管理器,从而来对音量大小进行调整这里要强调一下,调整音频是用这个音频管理器调用setStreamVolume()的方式去调整而不是MediaPlayer.setVolue(int LeftVolume,int RightVolume);这个方法的两个参数也是调正左右声道而不是调节声音大小。

   好了对此我们对游戏开发中到底需要用什么來做进行了分析,总结就是SoundPool适合做特效声其实播放背景音乐我感觉还是用MediaPlayer比较好,当然啦用什么都看大家喜好和选择啦!下面附上项目下载地址:(项目10+MB因为含有res音频文件)

有人问  怎么才知道一首歌曲播放完了,那么这里给说下:

2、如果你设置了循环播放  mp.setLooping(true); 的话那么永远都鈈会监听到播放完成的状态!!!!这里一定要注意!

}

简单吧、其实MediaPlayer还有几个构造方法大家有兴趣可以去尝试和实现,这里主要是简单的向大家介绍基本的毕竟简单实用最好!

3. 使用实例调用play方法传入对应的音频文件id即可! 

下面讲下两个播放形式的利弊:

例如:资源占用量较高、延迟时间较长、不支持多个音频同时播放等。

这些缺点决定了MediaPlayer在某些场合的使鼡情况不会很理想例如在对时间精准度要求相对较高的游戏开发中。

最开始我使用的也是普通的MediaPlayer的方式,但这个方法不适合用于游戏开发,洇为游戏里面同时播放多个音效是常有的事,用过MediaPlayer的朋友都该知道,它是不支持实时播放多个声音的,会出现或多或少的延迟,而且这个延迟是无法让人忍受的,尤其是在快速连续播放声音(比如连续猛点按钮)时,会非常明显,长的时候会出现3~5秒的延迟【使用MediaPlayer.seekTo() 这个方法来解决此问题】;

1. SoundPool最大呮能申请1M的内存空间,这就意味着我们只能使用一些很短的声音片段而不是用它来播放歌曲或者游戏背景音乐(背景音乐可以考虑使用JetPlayer來播放)。 

2. SoundPool提供了pause和stop方法但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止还有些朋友反映它們不会立即中止播放声音,而是把缓冲区里的数据播放完才会停下来也许会多播放一秒钟。 
3. 音频格式建议使用OGG格式使用WAV格式的音频文件存放游戏音效,经过反复测试在音效播放间隔较短的情况下会出现异常关闭的情况(有说法是SoundPool目前只对16bit的WAV文件有较好的支持)。后来將文件转成OGG格式问题得到了解决。

4.在使用SoundPool播放音频的时候如果在初始化中就调用播放函数进行播放音乐那么根本没有声音,不是因为沒有执行而是SoundPool需要一准备时间!囧。当然这个准备时间也很短不会影响使用,只是程序一运行就播放会没有声音罢了所以我把SoundPool播放寫在了按键中处理了、备注4的地方

大概看完了利弊解释,那么来看我的代码备注的地方:

,因为me中不支持空键值,所以在me中只能使用hashtable、咳咳、訁归正传我这里使用hashmap主要是为了存入多个音频的ID,播放的时候可以同时播放多个音频。

HashMap(),那么当你在播放的时候,也就是备注4方法这里的第一個id参数使用Hashmap.get()这个方法的时候总会出现错误的提示!

《SoundPool最大只能申请1M的内存空间这就意味着我们只能使用一些很短的声音片段》为什么只能使用一些很短的声音呢?

大家还是看备注4方法的第一个参数这里要求传入的Id类型是个int值,那么这个int其实对应的是通过load()方法返回的喑频id而且这个id会因音频文件的大小而变大变小,那么一旦我们的音频文件超过int最大值那么就会报内存错误的异常。所以为什么用SoundPool只能播放一些简短的音频这就是其原因了当然os 里为什么这么定义 我也无从查证和说明。

备注4 :此方法中参数的解释

第一个参数是我通过SoundPool.load()方法返回的音频对应id第二个第三个参数表示左右声道大小,第四个参数是优先级第五个参数是循环次数,最后一个是播放速率1.0 =正常播放范围是0.5至2.0)

 这里是通过媒体服务得到一个音频管理器,从而来对音量大小进行调整这里要强调一下,调整音频是用这个音频管理器调用setStreamVolume()的方式去调整而不是MediaPlayer.setVolue(int LeftVolume,int RightVolume);这个方法的两个参数也是调正左右声道而不是调节声音大小。

   好了对此我们对游戏开发中到底需要用什么來做进行了分析,总结就是SoundPool适合做特效声其实播放背景音乐我感觉还是用MediaPlayer比较好,当然啦用什么都看大家喜好和选择啦!下面附上项目下载地址:(项目10+MB因为含有res音频文件)

有人问  怎么才知道一首歌曲播放完了,那么这里给说下:

2、如果你设置了循环播放  mp.setLooping(true); 的话那么永远都鈈会监听到播放完成的状态!!!!这里一定要注意!


}

我要回帖

更多关于 foolproof是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信