2

電話を振るたびに 1 つのサウンドが再生されるゲームに取り組んでいます。アクティビティの onCreate で SoundPool を使用してサウンドをロードすることは理にかなっていますか、それとも、以下に示すように毎回メディアプレーヤーを作成しても問題ありませんか?

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

私の推測では、サウンドは 1 回だけロードされるため、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 に答える