Java 重新开始播放背景音乐的onResume无效
这是我的第一个应用程序,所以这个问题/答案可能非常基本。 我目前有一个暂停,当播放器离开屏幕时停止播放音乐。我也尝试过做类似的事情,但是使用onResume,这样音乐会再次播放背景音乐。不幸的是,这不起作用。当我按下重置按钮或返回主页并返回游戏页面时,它会再次工作。但它只是不能像我希望的那样,在应用程序回到屏幕上时立即加载 我的代码摘录如下Java 重新开始播放背景音乐的onResume无效,java,android,onresume,onpause,background-music,Java,Android,Onresume,Onpause,Background Music,这是我的第一个应用程序,所以这个问题/答案可能非常基本。 我目前有一个暂停,当播放器离开屏幕时停止播放音乐。我也尝试过做类似的事情,但是使用onResume,这样音乐会再次播放背景音乐。不幸的是,这不起作用。当我按下重置按钮或返回主页并返回游戏页面时,它会再次工作。但它只是不能像我希望的那样,在应用程序回到屏幕上时立即加载 我的代码摘录如下 package com.example.android.buttongame; 公共类MainActivity扩展了AppCompatActivity{
package com.example.android.buttongame;
公共类MainActivity扩展了AppCompatActivity{
...
MediaPlayer winningSound;
MediaPlayer buttonSound;
MediaPlayer backgroundMusic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
Plays ticking background noise at the start of this activity. Set on a loop
*/
backgroundMusic = MediaPlayer.create(this, R.raw.ticking_background);
backgroundMusic.start();
backgroundMusic.setOnErrorListener(new android.media.MediaPlayer.OnErrorListener() {
public boolean onError(MediaPlayer mediaplayer, int i, int j)
{
return false;
}
});
backgroundMusic.setLooping(true);
}
@Override
public void onResume(){
super.onResume();
backgroundMusic.start();
}
public void onPause() {
super.onPause();
backgroundMusic.stop();
}
...
public void reset(View v) {
/*
Plays button sound
*/
buttonSound = MediaPlayer.create(MainActivity.this, R.raw.button_sound);
buttonSound.start();
/*
* Refreshes activity
*/
this.recreate();
}
。。。
公共网页视图{
/*
Stops background music
*/
backgroundMusic.stop();
/*
Plays button sound
*/
buttonSound = MediaPlayer.create(MainActivity.this, R.raw.button_sound);
buttonSound.start();
/*
Leads to home page
*/
Intent homePage = new Intent(this, HomePage.class);
startActivity(homePage);
}
}在backgroundMusic.stop的位置,你应该使用backgroundMusic.pause,然后你将实现你想要的
调用stop停止播放,并使处于Started、Paused、Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。
一旦处于停止状态,在调用prepare或prepareAsync将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。
调用stop对已处于Stopped状态的MediaPlayer对象没有影响
以下是MediaPlayer的文档,可以帮助您了解其API。
您能为您的程序添加一些日志吗?请:最重要的是在backgroundMusic onErrorListener中,这样您可以查看是否出现了任何错误以及错误是什么,并在onResume处理程序中检查它是否真的被调用了?如果出于某种原因您不允许这样做,您可以在以后的li事件中启动音乐fecycle或您可以在短时间延迟(例如100毫秒)后重试启动音乐。但是,通过默默地接受错误,您很可能会得到您正在丢失的宝贵信息!谢谢,古拉姆的回答对我很有用。但我会研究如何解决未来的问题谢谢!这很简单,但对我来说很有用: