Как правильно использовать MediaPlayer в цикле?

Есть список звуковых файлов:

static int[] sounds = {R.raw.cat1, R.raw.cat2, R.raw.cat3};


Есть метод воспроизведения файла:

private void meowPlay(int fileName) {
	mp = MediaPlayer.create(this, fileName);
	mp.setLooping(false);
	mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
		public void onPrepared(MediaPlayer mp) {
			mp.start();
		}
	});
	mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
		public void onCompletion(MediaPlayer mp) {
			mp.release();
		}
	});
}


По нажатию на кнопку выполняется следующий код:

for (int i = 1; i <= 3; i++) {
	int rand = new Random().nextInt(2);
	meowPlay(sounds[rand]);
}


В результате 3 аудио файла воспроизводятся одновременно. Подскажите пожалуйста, как сделать последовательное воспроизведение этих файлов?
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
GavriKos
@GavriKos
Подписываетесь у плеера на событие окончания воспроизведения, и в этом событии запускаете следующий файл.
Альтернативный, но намного хуже вариант - проверяете доиграл ли плеер, если доиграл - скармливаете ему новый файл. Естественно проверять надо в отдельном потоке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ПрофСофт Саратов
от 180 000 до 250 000 ₽
Artezio Нижний Новгород
от 100 000 ₽
Artezio Санкт-Петербург
от 120 000 ₽
27 июл. 2021, в 18:44
6000 руб./за проект
05 авг. 2021, в 11:49
10000 руб./за проект
05 авг. 2021, в 11:49
1000 руб./за проект