Задать вопрос

Как правильно использовать 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 аудио файла воспроизводятся одновременно. Подскажите пожалуйста, как сделать последовательное воспроизведение этих файлов?
  • Вопрос задан
  • 438 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл Android‑разработчик
    5 месяцев
    Далее
  • Академия Codeby
    Курс «Анализ защищенности приложений Андроид»
    14 недель
    Далее
Решения вопроса 1
GavriKos
@GavriKos
Микропетпроджект - домашнее облако homeCloud
Подписываетесь у плеера на событие окончания воспроизведения, и в этом событии запускаете следующий файл.
Альтернативный, но намного хуже вариант - проверяете доиграл ли плеер, если доиграл - скармливаете ему новый файл. Естественно проверять надо в отдельном потоке.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы