MediaPlayer против SoundPool только для 1 одновременного потока - PullRequest
2 голосов
/ 17 марта 2011

Я работаю над игрой, в которой при каждом встряхивании телефона воспроизводится один-единственный звук.Имеет ли смысл использовать SoundPool и загружать звуки в onCreate моей деятельности, или можно каждый раз создавать медиаплеер, как показано ниже:

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

Я думаю, что SoundPool лучше, потому чтоЗвуки загружаются только один раз.Я прав?

Спасибо

Жюльен

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Как и ожидалось, SoundPool намного быстрее ...

1 голос
/ 17 марта 2011

Вы можете создать 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);
   }
}
...