这是我的第一个应用程序,所以这个问题/答案可能非常基本。 我目前有onPause(); ,当玩家离开屏幕时停止播放音乐。我尝试用onResume做类似的事情,这样音乐再次播放(backgroundMusic)。不幸的是,这不起作用。当我按下重置按钮或返回主页并返回游戏页面时,它再次起作用。但是,只要应用程序重新登录屏幕,它就不会加载,就像我希望的那样。
我的代码摘录如下;
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();
}
... public void homePage(查看视图){
/*
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);
}
}
答案 0 :(得分:1)
在backgroundMusic.stop()
的地方,你应该使用backgroundMusic.pause()
,然后你将实现你想要的目标。
致电stop()
停止播放,并在已开始,已暂停,已准备或MediaPlayer > PlaybackCompleted 状态进入已停止状态。
进入已停止状态后,在调用prepare()
或prepareAsync()
将MediaPlayer
对象设置为已准备之前,无法开始播放再次声明。
调用stop()
对已经处于已停止状态的MediaPlayer
对象无效。
以下是MediaPlayer
的文档,可帮助您了解其 API 。
https://developer.android.com/reference/android/media/MediaPlayer