MediaPlayer与SoundPool仅用于1个同步流

时间:2011-03-17 11:21:19

标签: android media-player soundpool

我正在制作一款游戏,每次手机震动时都会播放一首声音。 在我的活动的onCreate中使用SoundPool并加载声音是否有意义,或者每次都可以创建媒体播放器,如下所示:

private void onShake() {
    MediaPlayer mp= MediaPlayer.create(this, whipSound[currentWhip][force]);   
    mp.start();
}

我的猜测是SoundPool更好,因为声音只加载一次。我是对的吗?

由于

于连

2 个答案:

答案 0 :(得分:1)

您可以在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);
   }
}

答案 1 :(得分:1)

正如预期的那样,SoundPool要快得多......