2

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

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

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

谢谢

朱利安

4

2 回答 2

1

您可以在该方法之外创建 mediaPlayer onShake,然后在每次摇动时重置并启动它:

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);
   }
}
于 2011-03-17T12:21:37.413 回答
1

正如预期的那样,SoundPool 更快......

于 2011-03-17T13:09:24.717 回答