在Android中恢复歌曲

时间:2013-07-08 10:45:56

标签: java android android-mediaplayer

我创建了一个媒体播放器。我正确运行应用程序。但是当我重新开始活动时,我想恢复我的歌曲。当我重新开始活动时,为什么我的音频会重新启动?

我该怎么做?我不明白。谁能帮助我?

这是我的代码。

public class Audio_Activity extends Activity {
  public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.audio);
    init();

    mp=MediaPlayer.create(Audio_Activity.this,R.raw.ennamo_yadho);
    Log.e("Song is playing","in  Mediya Player ");

    if(mp!=null) {
      length=mp.getCurrentPosition();
      Log.e("Current ","Position -> " + length);

      if(length > 0){
        mp.seekTo(length);
        mp.start();
        btnChapter.setEnabled(false);
      }
  }

    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

      @Override
      public void onCompletion(MediaPlayer mp) {
        mp.stop();
        mp.release();
        btnChapter.setEnabled(true);
        System.out.println("Music is over and Button is enable !!!!!!");
      }
    });
  }
}

3 个答案:

答案 0 :(得分:2)

为防止这种情况发生,您应该在活动进入后台时使用服务播放声音。请参阅有关活动生命周期的android文档,了解实际发生的情况:https://developer.android.com/training/basics/activity-lifecycle/index.html

答案 1 :(得分:0)

你可以尝试:

mp.start();
mp.seekTo(length);

参考documentation of MediaPlayer

  

public void start()
  开始或恢复播放。如果先前已暂停播放,则播放将从暂停的位置继续播放。 如果播放已停止,或之前从未启动,则播放将从头开始。

答案 2 :(得分:0)

将mp.getCurrentPosition保存在某种持久性中,例如在onPause中使用sharedprefs,在媒体播放器上调用pause()。

在onResume中,执行mp.start(),mp.seekTo(savedPosition)。