我创建了一个媒体播放器。我正确运行应用程序。但是当我重新开始活动时,我想恢复我的歌曲。当我重新开始活动时,为什么我的音频会重新启动?
我该怎么做?我不明白。谁能帮助我?
这是我的代码。
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 !!!!!!");
}
});
}
}
答案 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)。