首页 > 解决方案 > onResume 重新开始播放背景音乐不起作用

问题描述

这是我的第一个应用程序,所以这个问题/答案可能非常基本。我目前有 onPause(); , 当播放器离开屏幕时停止播放音乐。我尝试过使用 onResume 做类似的事情,以便再次播放音乐(背景音乐)。不幸的是,这不起作用。当我按下重置按钮或返回主页并返回游戏页面时,它再次起作用。但它只是不会在应用程序回到屏幕后立即加载,就像我希望的那样。

我的代码摘录如下;

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);
}

}

标签: javaandroidonresumeonpausebackground-music

解决方案


在 的地方backgroundMusic.stop(),你应该使用backgroundMusic.pause()然后你会实现你正在寻找的东西。

调用stop()会停止播放并导致MediaPlayer处于StartedPausedPreparedPlaybackCompleted状态的 a 进入Stopped状态。一旦处于Stoppedprepare()状态,直到或被prepareAsync()调用以将MediaPlayer对象再次设置为Prepared状态,才能开始播放。调用对已经处于Stopped状态的对象stop()没有影响。MediaPlayer

这是MediaPlayer帮助您了解其API的文档。 https://developer.android.com/reference/android/media/MediaPlayer


推荐阅读