我创建了一个简单的应用程序,它有两个可以播放和停止歌曲的按钮。一切都在发挥作用。
但是我希望它在应用程序启动时暂停播放歌曲,并在应用程序再次启动时恢复播放歌曲。
我试过了:
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
mp.start();
}
但是当应用程序第一次启动时,它会自动启动歌曲。当你点击播放,歌曲黑客和应用程序崩溃时,它也会混淆应用程序。
这是onPause和onDestroy:
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mp.pause();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mp.stop();
mp.release();
} }
答案 0 :(得分:3)
在onResume()
方法检查歌曲是否已播放时,您不应该再次启动它。
所以现在你的onResume变成了
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (mp != null && mp.getCurrentPosition() > 0) {
mp.start();
}
}
这将解决您的崩溃问题。
现在第二部分,你如何从暂停的位置恢复比赛。
根据文档MediaPlayer
类有两种方法getCurrentPosition()
和seekTo(int msec)
您可以使用SharedPreferences
将currentPosition存储在onPause()
方法和onResume()
中获取该位置的SharedPreferences
和seekTo(int msec)
的位置,然后重新开始播放。
答案 1 :(得分:2)
尝试以下代码
@Override
protected void onResume() {
super.onResume();
if (mp != null && mp.getCurrentPosition() > 0) {
mp.start();
}
}