Медиаплеер не выйдет - PullRequest
0 голосов
/ 26 ноября 2011

В моем методе onCreate я проверяю, воспроизводится ли медиаплеер, и выключен ли он

if(mediaplayer.isPlaying()==false)
     try {
         playAudio(path);
  } catch (Exception e) {
       e.printStackTrace();

}else{
    mediaplayer.stop();
    mediaplayer.reset();

}
    primarySeekBarProgressUpdater();

}

Мой метод воспроизведения звука -

 private void playAudio(String url) throws Exception{



  mediaplayer.setDataSource(url);
  mediaplayer.prepare();
  mediaplayer.start();

 }

Я такжеинициализируйте мой медиаплеер перед методом onCreate.Проблема в том, что мой медиапроигрыватель не будет выключен, вместо этого, когда пользователь нажимает на новую песню в классе представления списка, он создает этот класс и одновременно воспроизводит оба медиапроигрывателя, старый продолжает воспроизводиться.

1 Ответ

0 голосов
/ 26 ноября 2011

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

Прежде всего, вам нужно прочитать и запомнить Activity Lifecycle: http://developer.android.com/reference/android/app/Activity.html

Во-вторых, к вашей проблеме, в соответствии с жизненным циклом, каждый раз, когда пользователь нажимает на песню в списке, затем он создает новый Activity для воспроизведения песни, что означает, что он также создает новый объект MediaPlayer , Следовательно, вы можете видеть, как много песен играет столько, сколько вы выбираете песни из списка. Что вам нужно сделать, так это обработать объект MediaPlayer при закрытии экрана воспроизведения музыки, чтобы вернуться к списку песен.

MediaPlayer mPlayer = null;;

public void onCreate() {
    // init mediaplayer here
    mPlayer = ...
}


public void onDestroy() {
    // release object
    if( mPlayer != null ) {
        mPlayer.stop();
        mPlayer.release();
        mPlayer = null;
    }
}
...