我在活动 A 中开始播放音乐。当活动 B 打开时,活动 A 关闭,活动 A 中的音乐停止播放。当我返回活动 A 时,我希望音乐从中断的地方继续播放。我该怎么做呢?
问问题
585 次
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 回答