Один объект Android MediaPlayer воспроизводит несколько звуков одновременно - PullRequest
0 голосов
/ 10 августа 2011

У меня есть ОДИН объект MediaPlayer MediaPlayer.Я использую его для воспроизведения разных звуков, один за другим.

mediaplayer = MediaPlayer.create(context, ResIdMusicONE);
mediaplayer.start();

// some user input

mediaplayer.release();
mediaplayer = null;

// some other user input

mediaplayer = MediaPlayer.create(context, ResIdMusicTWO);
mediaplayer.start();

// some user input

mediaplayer.release();
mediaplayer = null;

Иногда работает нормально.Но иногда два звука воспроизводятся одновременно.И на позициях, где медиаплеер уже должен был выйти и быть равным нулю.

Спасибо за помощь.

1 Ответ

0 голосов
/ 10 августа 2011

На вашем месте я бы использовал класс SoundPool для этого. С помощью SoundPool вы можете установить количество одновременно воспроизводимых потоков, поэтому, установив это значение в 1, вы можете просто вызывать play () снова и снова, и самый последний звук, который вы слышите, - это самый последний вызов play ().

Взгляните на мое сообщение некоторое время назад. У него есть пример класса SoundPool в вопросе.

Edit: Вы пытались создать новый экземпляр и вызывать prepare () каждый раз, когда хотите запустить новый звук?

mediaplayer = new MediaPlayer();
mediaplayer.setDataSource(path);
mediaplayer.prepare();
mediaplayer.start();

Хотя сейчас, когда я об этом думаю, я почти уверен, что вам нужно сделать это, только если вы используете файл с SD-карты, а не из своих ресурсов ... Хммм.

...