0

我在活动 A 中开始播放音乐。当活动 B 打开时,活动 A 关闭,活动 A 中的音乐停止播放。当我返回活动 A 时,我希望音乐从中断的地方继续播放。我该怎么做呢?

4

3 回答 3

1

您需要(持久地)存储您的媒体在活动 A 中的位置onPause()onStop()然后onResume()检查存储的值并调用您的媒体seekTo()播放器。像这样的东西:

获取您的 SharedPreferences 对象:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor prefsEdit = prefs.edit();

存储和调用位置。

public void onPause(){
  super.onStop();
  //It might make more sense to do this right before you call startActivity()
  //to launch activityB then here.
  int position = mp.getCurrentPosition();
  prefsEdit.putInt("mediaPosition", position);
  prefsEdit.commit();
}

public void onResume(){
  super.onResume();
  int position = prefs.getInt("mediaPosition", 0);
  mp.seekTo(position);
}

请注意,如果您使用此方法,则当您退出 ActivityA 而不转到 B 时,您还需要将位置设置为 0。否则当您回到它时,音乐不会从头开始。

于 2012-08-22T13:27:48.120 回答
0

在 Activity A 中,重写 onPause() 方法以暂停 MediaPlayer,并重写 onResume() 以恢复 MediaPlayer。并确保进入 Activity B 时 mediacontroller 对象不会被破坏。

于 2012-08-22T02:46:18.310 回答
0

如果您仔细观察,实际上可以看到实时媒体播放器是在服务上处理的,而不是在活动上处理的。所以我的建议是尝试在服务中编写媒体播放器,并更好地使用媒体播放器类和活动与服务的生命周期方法

于 2012-08-22T03:28:33.483 回答