Я плохо знаком с разработкой Android, и у меня есть вопрос/проблема.
Я играю вокруг с классом MediaPlayer для репродуцирования некоторых звуков/музыки. Я играю необработанные ресурсы (res/raw
) и это выглядит довольно легким.
Для проигрывания необработанного ресурса MediaPlayer должен быть инициализирован как это:
MediaPlayer mp = MediaPlayer.create(appContext, R.raw.song);
mp.start();
До здесь нет никакой проблемы. Звук играется, и все хорошо работает. Моя проблема появляется, когда я хочу добавить больше опций к своему приложению. Конкретно, когда я добавляю кнопку/опцию "Stop".
В основном то, что я хочу сделать..., когда я нажимаю "Stop", музыкальные остановки. И когда я нажимаю "Start", песня/звук запускается. (довольно основной!)
Для остановки медиаплеера только необходимо звонить stop()
. Но играть звук снова, медиаплеер должен быть reseted и подготовленный.
mp.reset();
mp.setDataSource(params);
mp.prepare();
Проблема состоит в том что метод setDataSource()
только принимает как параметрические усилители путь к файлу, Контент-провайдера URI, путь URL потоковых медиа или Дескриптор файла.
Так, так как этот метод не принимает идентификатор ресурса, я не знаю, как привести в порядок источник данных для вызова prepare()
. Кроме того, я не понимаю, почему Вы не можете использовать идентификатор Resouce для установки источника данных, но можно использовать идентификатор ресурса при инициализации MediaPlayer.
Я предполагаю, что пропускаю что-то. Интересно, смешиваю ли я понятия и метод stop()
не должен быть назван в кнопке "Stop". Какая-либо справка?
Заранее спасибо!!!
Вы можете использовать
mp.pause();
mp.seekTo(0);
, чтобы остановить музыкальный проигрыватель.