MediaPlayer vs SoundPool 仅用于 1 个同时流
Posted
技术标签:
【中文标题】MediaPlayer vs SoundPool 仅用于 1 个同时流【英文标题】:MediaPlayer vs SoundPool for only 1 simultaneous stream 【发布时间】:2011-03-17 11:21:18 【问题描述】:我正在开发一款游戏,每次摇晃手机时都会播放一个声音。 在我的activity的onCreate中使用SoundPool并加载声音是否有意义,或者每次都创建一个媒体播放器是否可以,如下所示:
private void onShake()
MediaPlayer mp= MediaPlayer.create(this, whipSound[currentWhip][force]);
mp.start();
我的猜测是 SoundPool 更好,因为声音只加载一次。我说的对吗?
谢谢
朱利安
【问题讨论】:
【参考方案1】:正如预期的那样,SoundPool 更快...
【讨论】:
【参考方案2】:您可以在onShake
方法之外创建 mediaPlayer,然后在每次摇动时重置并启动它:
MediaPlayer mp= MediaPlayer.create(this, whipSound[currentWhip][force]);
...
private void onShake()
mp.reset();
mp.start();
//or
private void onShake()
try
mp.stop();
mp.prepare();
catch (IllegalStateException e) /* Ignore */
catch (IOException e) /* Ignore */
try
mp.start();
catch (IllegalStateException e)
Log.e(TAG, "MediaPlayer failed ", e);
【讨论】:
我必须每次都加载声音,因为它可能会根据震动强度而有所不同。我用过 SoundPool,它的速度要快得多。以上是关于MediaPlayer vs SoundPool 仅用于 1 个同时流的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 中的 SoundPool 到 MediaPlayer
SoundPool 和 MediaPlayer 音量对应问题
Android - MediaPlayer/SoundPool 性能?