2013-02-18 2 views
0

Я пытаюсь играть два звуковых элементов, один за другимAndroid: Игра двух звуков один за другим

MediaPlayer mp  = null; 

protected void produceErrorSound(int index) { 
     if (mp != null) { 
      mp.reset(); 
      mp.release(); 
     } 


     mp = MediaPlayer.create(this, index); 

     mp.start(); 
    } 


public void correctAnswerAndNext(){ 
    produceErrorSound(R.raw.right1) ; 
    produceErrorSound(R.raw.right1) ; 
} 

, но только второй звук производится. Есть ли альтернативный подход?

ответ

3

Я не вижу механизма ожидания в вашем коде.

Вы можете использовать onCompletionListener для получения обратного вызова, когда ваш первый MediaPlayer завершил воспроизведение. В этот момент вы можете запустить второй MediaPlayer.

Альтернативный способ использования Jellybean (и более поздних версий) заключается в использовании функции цепочки аудио (то есть setNextMediaPlayer) для автоматического запуска другого MediaPlayer, как только текущий закончен. Что-то вроде этого (я опустил вызовы setDataSource и т.д. для краткости):

mediaPlayer1.prepare(); 
mediaPlayer2.prepare(); 
mediaPlayer1.start(); 
mediaPlayer1.setNextMediaPlayer(mediaPlayer2); 
+0

может у поделиться какой-то код snipet? – RDX

Смежные вопросы