Как не проигрывать медиалеер заново?

379
14 мая 2017, 22:40

Здравствуйте! У меня при запуске приложения в первом активити проигрывается музыка с помощью метода mediaplayer.start();. Открываю второе активити, когда нажимаю Назад и снова открывается первое активити, музыка параллельно проигрывается еще раз сначала, но музыка, которая запустилась первая, все еще проигрывается. Теперь у меня две одинаковые музыки вместе проигрываются. Я хочу, чтобы музыка, которая проигрывается первой в первом активити не останавливалась до закрытия приложения (повторялась в случае окончания). При возвращении назад на первое активити не проигрывалась сначала и параллельно. Как можно это сделать? Заранее спасибо.

Answer 1

Вероятно, вы создаете новый экземпляр в методе onResume, поэтому оно проигрывается еще раз. Для реализации проигрывания музыки в одном Activity используйте методы OnCreate в котором создаете экземпляр плеера, в onResume делаете запуск плеера, а в onPause останавливаете воспроизведение, в OnDestroy приведен способ завершения работы плеера в случае уничтожения Activity.

Выполнять seek не требуется после onResume, диаграмма состояний с официального сайта и описание функций говорит о том, что воспроизведение будет продолжено после вызова start.

MediaPlayer mPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mPlayer = MediaPlayer.create(MainActivity.this, "audio file");
    mMediaPlayer.setLooping(true);
}
@Override
protected void onPause() {
    super.onPause();
    mPlayer.pause();
}
@Override
protected void onResume() {
     super.onResume();
     mPlayer.start();
}
@Override
protected void onDestroy() {
     super.onDestroy();
     if(mPlayer!=null){
          mPlayer.stop();
          mPlayer.release();
          mPlayer = null;
     }
}

Подробнее об данном компоненте на официальном сайте Android

READ ALSO
Как и где разместить json файлы?

Как и где разместить json файлы?

Допустим у меня есть много json файловГде я могу их разместить, чтобы потом получить их на устройство, в процессе, их нужно будет изменять

365
Autowired NullPointerException

Autowired NullPointerException

Я только разбираюсь со спрингом, поэтому не совсем понимаю как работаетИтак я сделал все как в туториале firstapp и все работает

448
MediaView налазит туда, куда не должна

MediaView налазит туда, куда не должна

Доброго времени сутокПрошу объяснить, что я сделал не так и как это исправить

226